summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2023-03-13 08:21:10 +0100
committerMatthias Clasen <mclasen@redhat.com>2023-03-13 08:21:10 +0100
commit517b4d584ced71a7c6ba0f7af8f4c3bdbeb7ee8d (patch)
tree19b8827fe46bca5d5a1b2b358b6a5dac51f9dde9
parent88d9244b988146281fc041202f5efcfb2302e86f (diff)
downloadgtk+-517b4d584ced71a7c6ba0f7af8f4c3bdbeb7ee8d.tar.gz
gtk4-demo: Scale logarithmically in image scaling
-rw-r--r--demos/gtk-demo/demo3widget.c2
-rw-r--r--demos/gtk-demo/menu.c18
2 files changed, 14 insertions, 6 deletions
diff --git a/demos/gtk-demo/demo3widget.c b/demos/gtk-demo/demo3widget.c
index 6fc935cffd..95a1479e8f 100644
--- a/demos/gtk-demo/demo3widget.c
+++ b/demos/gtk-demo/demo3widget.c
@@ -277,7 +277,7 @@ demo3_widget_class_init (Demo3WidgetClass *class)
g_object_class_install_property (object_class, PROP_SCALE,
g_param_spec_float ("scale", NULL, NULL,
- 0.0, 10.0, 1.0,
+ 0.0, 1024.0, 1.0,
G_PARAM_READWRITE));
g_object_class_install_property (object_class, PROP_ANGLE,
diff --git a/demos/gtk-demo/menu.c b/demos/gtk-demo/menu.c
index 768e32a5be..2b057b25c1 100644
--- a/demos/gtk-demo/menu.c
+++ b/demos/gtk-demo/menu.c
@@ -84,6 +84,16 @@ rotate (GtkWidget *button,
g_object_set (demo, "angle", angle, NULL);
}
+static void
+scale_changed (GtkRange *range,
+ GtkWidget *widget)
+{
+ float scale;
+
+ scale = (float) pow (2., gtk_range_get_value (range));
+ g_object_set (widget, "scale", scale, NULL);
+}
+
GtkWidget *
do_menu (GtkWidget *do_widget)
{
@@ -129,7 +139,7 @@ do_menu (GtkWidget *do_widget)
g_signal_connect (button, "clicked", G_CALLBACK (rotate), widget);
gtk_box_append (GTK_BOX (box2), button);
- scale = gtk_scale_new_with_range (GTK_ORIENTATION_HORIZONTAL, 0.01, 10.0, 0.1);
+ scale = gtk_scale_new_with_range (GTK_ORIENTATION_HORIZONTAL, -10, 10.0, 0.1);
gtk_widget_set_tooltip_text (scale, "Zoom");
gtk_range_set_value (GTK_RANGE (scale), 1.0);
gtk_widget_set_hexpand (scale, TRUE);
@@ -140,10 +150,8 @@ do_menu (GtkWidget *do_widget)
gtk_box_append (GTK_BOX (box2), dropdown);
g_object_bind_property (dropdown, "selected", widget, "filter", G_BINDING_DEFAULT);
-
- g_object_bind_property (gtk_range_get_adjustment (GTK_RANGE (scale)), "value",
- widget, "scale",
- G_BINDING_BIDIRECTIONAL);
+
+ g_signal_connect (scale, "value-changed", G_CALLBACK (scale_changed), widget);
}
if (!gtk_widget_get_visible (window))