From: Matthias Clasen Date: Mon, 13 Mar 2023 07:21:10 +0000 (+0100) Subject: gtk4-demo: Scale logarithmically in image scaling X-Git-Tag: archive/raspbian/4.12.3+ds-1+rpi1~1^2^2^2~22^2~5^2~7^2~1 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=517b4d584ced71a7c6ba0f7af8f4c3bdbeb7ee8d;p=gtk4.git gtk4-demo: Scale logarithmically in image scaling --- 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))