[gtk/matthiasc/for-master: 28/29] gtk-demo: Another way to trigger theme benchmark



commit 005a3da18fe89c7341c415d106f1abb5afd3450c
Author: Matthias Clasen <mclasen redhat com>
Date:   Fri Jun 5 18:39:08 2020 -0400

    gtk-demo: Another way to trigger theme benchmark
    
    The click on the headerbar seems broken atm, so add
    an explicit button to trigger the cycling among the
    themes.

 demos/gtk-demo/themes.c  | 26 ++++++++++++++++++++++++++
 demos/gtk-demo/themes.ui |  5 +++++
 2 files changed, 31 insertions(+)
---
diff --git a/demos/gtk-demo/themes.c b/demos/gtk-demo/themes.c
index 1560dae952..edcdd2ec35 100644
--- a/demos/gtk-demo/themes.c
+++ b/demos/gtk-demo/themes.c
@@ -165,6 +165,29 @@ clicked (GtkGestureClick *gesture,
     }
 }
 
+static void
+toggle_cycle (GObject    *button,
+              GParamSpec *pspec,
+              gpointer    data)
+{
+  gboolean active;
+  GtkWidget *window;
+
+  g_object_get (button, "active", &active, NULL);
+
+  window = gtk_widget_get_ancestor (GTK_WIDGET (button), GTK_TYPE_WINDOW);
+
+  if (active && !tick_cb)
+    {
+      tick_cb = gtk_widget_add_tick_callback (window, change_theme, data, NULL);
+    }
+  else if (!active && tick_cb)
+    {
+      gtk_widget_remove_tick_callback (window, tick_cb);
+      tick_cb = 0;
+    }
+}
+
 GtkWidget *
 do_themes (GtkWidget *do_widget)
 {
@@ -174,6 +197,7 @@ do_themes (GtkWidget *do_widget)
     {
       GtkBuilder *builder;
       GtkWidget *header;
+      GtkWidget *button;
       GtkGesture *gesture;
 
       builder = gtk_builder_new_from_resource ("/themes/themes.ui");
@@ -187,6 +211,8 @@ do_themes (GtkWidget *do_widget)
       g_signal_connect (gesture, "pressed", G_CALLBACK (clicked), builder);
       gtk_widget_add_controller (header, GTK_EVENT_CONTROLLER (gesture));
 
+      button = GTK_WIDGET (gtk_builder_get_object (builder, "toggle"));
+      g_signal_connect (button, "notify::active", G_CALLBACK (toggle_cycle), builder);
       gtk_widget_realize (window);
     }
 
diff --git a/demos/gtk-demo/themes.ui b/demos/gtk-demo/themes.ui
index ebf2d940a8..91e4efbba6 100644
--- a/demos/gtk-demo/themes.ui
+++ b/demos/gtk-demo/themes.ui
@@ -5,6 +5,11 @@
     <child type="titlebar">
       <object class="GtkHeaderBar" id="header">
         <property name="show-title-buttons">1</property>
+        <child type="start">
+          <object class="GtkToggleButton" id="toggle">
+            <property name="label">Cycle</property>
+          </object>
+        </child>
         <child type="end">
           <object class="GtkLabel" id="fps"/>
         </child>


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]