From: Matthias Clasen Date: Wed, 2 Aug 2023 19:32:45 +0000 (+0000) Subject: gtk-demo: Use GtkBuilderScope more X-Git-Tag: archive/raspbian/4.12.3+ds-1+rpi1~1^2^2^2~22^2~1^2~11^2~2 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=40d3b307700468b31eacfcbd379685af82111b81;p=gtk4.git gtk-demo: Use GtkBuilderScope more Under circumstances I haven't fully tracked down, these demos refuse to run, failing to locate their callbacks. So use the machinery we have, and set up a GtkBuilderCScope for each of the problematic cases. --- diff --git a/demos/gtk-demo/fishbowl.c b/demos/gtk-demo/fishbowl.c index bf0eef7b57..85ced9752e 100644 --- a/demos/gtk-demo/fishbowl.c +++ b/demos/gtk-demo/fishbowl.c @@ -310,11 +310,20 @@ do_fishbowl (GtkWidget *do_widget) if (!window) { GtkBuilder *builder; + GtkBuilderScope *scope; GtkWidget *bowl; g_type_ensure (GTK_TYPE_FISHBOWL); - builder = gtk_builder_new_from_resource ("/fishbowl/fishbowl.ui"); + scope = gtk_builder_cscope_new (); + gtk_builder_cscope_add_callback (GTK_BUILDER_CSCOPE (scope), fishbowl_prev_button_clicked_cb); + gtk_builder_cscope_add_callback (GTK_BUILDER_CSCOPE (scope), fishbowl_next_button_clicked_cb); + gtk_builder_cscope_add_callback (GTK_BUILDER_CSCOPE (scope), fishbowl_changes_toggled_cb); + gtk_builder_cscope_add_callback (GTK_BUILDER_CSCOPE (scope), format_header_cb); + + builder = gtk_builder_new (); + gtk_builder_set_scope (builder, scope); + gtk_builder_add_from_resource (builder, "/fishbowl/fishbowl.ui", NULL); window = GTK_WIDGET (gtk_builder_get_object (builder, "window")); g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window); @@ -326,6 +335,7 @@ do_fishbowl (GtkWidget *do_widget) gtk_widget_realize (window); g_object_unref (builder); + g_object_unref (scope); } if (!gtk_widget_get_visible (window)) diff --git a/demos/gtk-demo/iconscroll.c b/demos/gtk-demo/iconscroll.c index 87a0c3eb1f..9e7b5b3add 100644 --- a/demos/gtk-demo/iconscroll.c +++ b/demos/gtk-demo/iconscroll.c @@ -354,10 +354,18 @@ do_iconscroll (GtkWidget *do_widget) if (!window) { GtkBuilder *builder; + GtkBuilderScope *scope; GtkWidget *label; guint id; - builder = gtk_builder_new_from_resource ("/iconscroll/iconscroll.ui"); + scope = gtk_builder_cscope_new (); + gtk_builder_cscope_add_callback (GTK_BUILDER_CSCOPE (scope), iconscroll_prev_clicked_cb); + gtk_builder_cscope_add_callback (GTK_BUILDER_CSCOPE (scope), iconscroll_next_clicked_cb); + + builder = gtk_builder_new (); + gtk_builder_set_scope (builder, scope); + + gtk_builder_add_from_resource (builder, "/iconscroll/iconscroll.ui", NULL); window = GTK_WIDGET (gtk_builder_get_object (builder, "window")); g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window); gtk_window_set_display (GTK_WINDOW (window), @@ -375,6 +383,7 @@ do_iconscroll (GtkWidget *do_widget) GUINT_TO_POINTER (id), remove_timeout); g_object_unref (builder); + g_object_unref (scope); } if (!gtk_widget_get_visible (window)) diff --git a/demos/gtk-demo/spinbutton.c b/demos/gtk-demo/spinbutton.c index 85d8c9c8ac..f2dd5e448e 100644 --- a/demos/gtk-demo/spinbutton.c +++ b/demos/gtk-demo/spinbutton.c @@ -188,10 +188,20 @@ do_spinbutton (GtkWidget *do_widget) if (!window) { GtkBuilder *builder; + GtkBuilderScope *scope; GtkAdjustment *adj; GtkWidget *label; - builder = gtk_builder_new_from_resource ("/spinbutton/spinbutton.ui"); + scope = gtk_builder_cscope_new (); + builder = gtk_builder_new (); + gtk_builder_cscope_add_callback (GTK_BUILDER_CSCOPE (scope), spinbutton_hex_spin_input); + gtk_builder_cscope_add_callback (GTK_BUILDER_CSCOPE (scope), spinbutton_hex_spin_output); + gtk_builder_cscope_add_callback (GTK_BUILDER_CSCOPE (scope), spinbutton_time_spin_input); + gtk_builder_cscope_add_callback (GTK_BUILDER_CSCOPE (scope), spinbutton_time_spin_output); + gtk_builder_cscope_add_callback (GTK_BUILDER_CSCOPE (scope), spinbutton_month_spin_input); + gtk_builder_cscope_add_callback (GTK_BUILDER_CSCOPE (scope), spinbutton_month_spin_output); + gtk_builder_set_scope (builder, scope); + gtk_builder_add_from_resource (builder, "/spinbutton/spinbutton.ui", NULL); window = GTK_WIDGET (gtk_builder_get_object (builder, "window")); gtk_window_set_display (GTK_WINDOW (window), gtk_widget_get_display (do_widget)); @@ -233,6 +243,7 @@ do_spinbutton (GtkWidget *do_widget) NULL, NULL); g_object_unref (builder); + g_object_unref (scope); } if (!gtk_widget_get_visible (window))