[gnome-builder] gstyle-color-widget: fix contextual menu trigger



commit 5a7ed8d801f37da2104aa9566a0d99b870ffcd85
Author: Sebastien Lafargue <slafargue gnome org>
Date:   Wed Jul 20 12:40:02 2016 +0200

    gstyle-color-widget: fix contextual menu trigger
    
    We show the contextual menu only
    if the color widget is inside a palette widget.

 contrib/gstyle/gstyle-color-widget.c |   33 +++++++++++++++++++--------------
 1 files changed, 19 insertions(+), 14 deletions(-)
---
diff --git a/contrib/gstyle/gstyle-color-widget.c b/contrib/gstyle/gstyle-color-widget.c
index 20be38a..99f5378 100644
--- a/contrib/gstyle/gstyle-color-widget.c
+++ b/contrib/gstyle/gstyle-color-widget.c
@@ -453,6 +453,7 @@ gstyle_color_widget_multipress_gesture_pressed (GtkGestureMultiPress *gesture,
   GtkBuilder *builder;
   GtkWidget *button_rename;
   GtkWidget *button_remove;
+  GtkWidget *ancestor;
   gint button;
 
   button = gtk_gesture_single_get_current_button (GTK_GESTURE_SINGLE (gesture));
@@ -487,20 +488,24 @@ gstyle_color_widget_multipress_gesture_pressed (GtkGestureMultiPress *gesture,
 
   if (button == GDK_BUTTON_SECONDARY)
     {
-      builder = gtk_builder_new_from_resource ("/org/gnome/libgstyle/ui/gstyle-color-widget.ui");
-      popover = GTK_WIDGET (gtk_builder_get_object (builder, "popover"));
-      button_rename = GTK_WIDGET (gtk_builder_get_object (builder, "button_rename"));
-      g_signal_connect_object (button_rename, "button-release-event",
-                               G_CALLBACK (popover_button_rename_clicked_cb), self, G_CONNECT_SWAPPED);
-
-      button_remove = GTK_WIDGET (gtk_builder_get_object (builder, "button_remove"));
-      g_signal_connect_object (button_remove, "button-release-event",
-                               G_CALLBACK (popover_button_remove_clicked_cb), self, G_CONNECT_SWAPPED);
-
-      gtk_popover_set_relative_to (GTK_POPOVER (popover), GTK_WIDGET (self));
-      g_signal_connect_swapped (popover, "closed", G_CALLBACK (contextual_popover_closed_cb), self);
-      gtk_widget_show (popover);
-      g_object_unref (builder);
+      ancestor = gtk_widget_get_ancestor (GTK_WIDGET (self), GSTYLE_TYPE_PALETTE_WIDGET);
+      if (ancestor != NULL)
+        {
+          builder = gtk_builder_new_from_resource ("/org/gnome/libgstyle/ui/gstyle-color-widget.ui");
+          popover = GTK_WIDGET (gtk_builder_get_object (builder, "popover"));
+          button_rename = GTK_WIDGET (gtk_builder_get_object (builder, "button_rename"));
+          g_signal_connect_object (button_rename, "button-release-event",
+                                   G_CALLBACK (popover_button_rename_clicked_cb), self, G_CONNECT_SWAPPED);
+
+          button_remove = GTK_WIDGET (gtk_builder_get_object (builder, "button_remove"));
+          g_signal_connect_object (button_remove, "button-release-event",
+                                   G_CALLBACK (popover_button_remove_clicked_cb), self, G_CONNECT_SWAPPED);
+
+          gtk_popover_set_relative_to (GTK_POPOVER (popover), GTK_WIDGET (self));
+          g_signal_connect_swapped (popover, "closed", G_CALLBACK (contextual_popover_closed_cb), self);
+          gtk_widget_show (popover);
+          g_object_unref (builder);
+        }
     }
 }
 


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