gtk-demo: Remove deprecations from gltransitions
authorMatthias Clasen <mclasen@redhat.com>
Fri, 21 Oct 2022 19:18:10 +0000 (15:18 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Sat, 22 Oct 2022 01:48:39 +0000 (21:48 -0400)
Make the GL transitions demo use global style providers.

demos/gtk-demo/gltransition.c

index d1c9831fc0c27bdb39cf29169af1085c60fc275b..321a85714799bd3e4001828fc6ead452726cf1df 100644 (file)
@@ -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;
 }