diff options
author | Matthias Clasen <mclasen@redhat.com> | 2023-03-13 08:21:10 +0100 |
---|---|---|
committer | Matthias Clasen <mclasen@redhat.com> | 2023-03-13 08:21:10 +0100 |
commit | 517b4d584ced71a7c6ba0f7af8f4c3bdbeb7ee8d (patch) | |
tree | 19b8827fe46bca5d5a1b2b358b6a5dac51f9dde9 | |
parent | 88d9244b988146281fc041202f5efcfb2302e86f (diff) | |
download | gtk+-517b4d584ced71a7c6ba0f7af8f4c3bdbeb7ee8d.tar.gz |
gtk4-demo: Scale logarithmically in image scaling
-rw-r--r-- | demos/gtk-demo/demo3widget.c | 2 | ||||
-rw-r--r-- | demos/gtk-demo/menu.c | 18 |
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)) |