From f8edefd7c0903550275d210dbc7dcc68f1048139 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Fri, 21 Oct 2022 15:18:10 -0400 Subject: [PATCH] gtk-demo: Remove deprecations from gltransitions Make the GL transitions demo use global style providers. --- demos/gtk-demo/gltransition.c | 27 ++++++++++++++++++--------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/demos/gtk-demo/gltransition.c b/demos/gtk-demo/gltransition.c index d1c9831fc0..321a857147 100644 --- a/demos/gtk-demo/gltransition.c +++ b/demos/gtk-demo/gltransition.c @@ -20,8 +20,6 @@ #include "gtkshadertoy.h" #include "gskshaderpaintable.h" -G_GNUC_BEGIN_IGNORE_DEPRECATIONS - static GtkWidget *demo_window = NULL; static void @@ -146,7 +144,6 @@ make_shader_stack (const char *name, GtkTextBuffer *buffer; GBytes *bytes; GtkEventController *controller; - GtkCssProvider *provider; GdkPaintable *paintable; stack = gtk_shader_stack_new (); @@ -237,12 +234,6 @@ make_shader_stack (const char *name, g_signal_connect (buffer, "changed", G_CALLBACK (text_changed), button); g_object_set_data (G_OBJECT (button), "the-stack", stack); g_signal_connect (button, "clicked", G_CALLBACK (apply_text), buffer); - provider = gtk_css_provider_new (); - gtk_css_provider_load_from_data (provider, "button.small { padding: 0; }", -1); - gtk_style_context_add_provider (gtk_widget_get_style_context (button), - GTK_STYLE_PROVIDER (provider), - GTK_STYLE_PROVIDER_PRIORITY_APPLICATION); - g_object_unref (provider); gtk_widget_set_halign (button, GTK_ALIGN_CENTER); gtk_widget_set_valign (button, GTK_ALIGN_CENTER); gtk_widget_add_css_class (button, "small"); @@ -276,11 +267,21 @@ make_shader_stack (const char *name, return vbox; } +static void +remove_provider (gpointer data) +{ + GtkStyleProvider *provider = GTK_STYLE_PROVIDER (data); + + gtk_style_context_remove_provider_for_display (gdk_display_get_default (), provider); + g_object_unref (provider); +} + static GtkWidget * create_gltransition_window (GtkWidget *do_widget) { GtkWidget *window, *headerbar, *scale, *outer_grid, *grid, *background; GdkPaintable *paintable; + GtkCssProvider *provider; window = gtk_window_new (); gtk_window_set_display (GTK_WINDOW (window), gtk_widget_get_display (do_widget)); @@ -335,6 +336,14 @@ create_gltransition_window (GtkWidget *do_widget) make_shader_stack ("Kaleidoscope", "/gltransition/kaleidoscope.glsl", 3, scale), 1, 1, 1, 1); + provider = gtk_css_provider_new (); + gtk_css_provider_load_from_data (provider, "button.small { padding: 0; }", -1); + gtk_style_context_add_provider_for_display (gdk_display_get_default (), + GTK_STYLE_PROVIDER (provider), + GTK_STYLE_PROVIDER_PRIORITY_APPLICATION); + + g_object_set_data_full (G_OBJECT (window), "provider", provider, remove_provider); + return window; } -- 2.30.2