[gtk+] widget-factory: Fix the row activation example



commit f2c6b31e679d54ebc9175536b55e90f5b29ed402
Author: Matthias Clasen <mclasen redhat com>
Date:   Sat Jul 12 17:30:25 2014 -0400

    widget-factory: Fix the row activation example
    
    Turns out ::activate on listbox rows is only for key bindings,
    so use ::row-activated.

 demos/widget-factory/widget-factory.c |   36 ++++++++++++++++++++------------
 1 files changed, 22 insertions(+), 14 deletions(-)
---
diff --git a/demos/widget-factory/widget-factory.c b/demos/widget-factory/widget-factory.c
index d5ddba0..884ce58 100644
--- a/demos/widget-factory/widget-factory.c
+++ b/demos/widget-factory/widget-factory.c
@@ -524,18 +524,25 @@ populate_colors (GtkWidget *widget)
 }
 
 static void
-activate_row3 (GtkListBoxRow *row, GtkWidget *image)
+row_activated (GtkListBox *box, GtkListBoxRow *row)
 {
-  if (gtk_widget_get_opacity (image) > 0)
-    gtk_widget_set_opacity (image, 0);
-  else
-    gtk_widget_set_opacity (image, 1);
-}
+  GtkWidget *image;
+  GtkWidget *dialog;
 
-static void
-activate_row4 (GtkListBoxRow *row, GtkWidget *dialog)
-{
-  gtk_window_present (GTK_WINDOW (dialog));
+  image = (GtkWidget *)g_object_get_data (G_OBJECT (row), "image");
+  dialog = (GtkWidget *)g_object_get_data (G_OBJECT (row), "dialog");
+
+  if (image)
+    {
+      if (gtk_widget_get_opacity (image) > 0)
+        gtk_widget_set_opacity (image, 0);
+      else
+        gtk_widget_set_opacity (image, 1);
+    }
+  else if (dialog)
+    {
+      gtk_window_present (GTK_WINDOW (dialog));
+    }
 }
 
 static void
@@ -592,14 +599,15 @@ activate (GApplication *app)
 
   widget = (GtkWidget *)gtk_builder_get_object (builder, "listbox");
   gtk_list_box_set_header_func (GTK_LIST_BOX (widget), update_header, NULL, NULL);
+  g_signal_connect (widget, "row-activated", G_CALLBACK (row_activated), NULL);
+
   widget = gtk_widget_get_parent ((GtkWidget *)gtk_builder_get_object (builder, "listboxrow3"));
   widget2 = (GtkWidget *)gtk_builder_get_object (builder, "listboxrow3image");
-  g_signal_connect (widget, "activate",
-                    G_CALLBACK (activate_row3), widget2);
+  g_object_set_data (G_OBJECT (widget), "image", widget2);
+
   widget = gtk_widget_get_parent ((GtkWidget *)gtk_builder_get_object (builder, "listboxrow4"));
   widget2 = (GtkWidget *)gtk_builder_get_object (builder, "info_dialog");
-  g_signal_connect (widget, "activate",
-                    G_CALLBACK (activate_row4), widget2);
+  g_object_set_data (G_OBJECT (widget), "dialog", widget2);
 
   widget = (GtkWidget *)gtk_builder_get_object (builder, "toolbar");
   g_object_set_data (G_OBJECT (window), "toolbar", widget);


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