[gtk/shortcuts-rebased-again: 136/159] color editor: Avoid popup-menu use



commit f73d77c5fcfec13ddf6a4e599dc8f68b3872f782
Author: Matthias Clasen <mclasen redhat com>
Date:   Mon Jun 24 01:31:49 2019 +0000

    color editor: Avoid popup-menu use

 gtk/gtkcoloreditor.c        |  9 +++++----
 gtk/gtkcoloreditorprivate.h |  2 ++
 gtk/gtkcolorplane.c         | 21 ++++++++++++++++++---
 gtk/gtkcolorscale.c         | 23 +++++++++++++++++++----
 gtk/ui/gtkcoloreditor.ui    |  3 ---
 5 files changed, 44 insertions(+), 14 deletions(-)
---
diff --git a/gtk/gtkcoloreditor.c b/gtk/gtkcoloreditor.c
index 6a43b7e3d2..fb6f492a38 100644
--- a/gtk/gtkcoloreditor.c
+++ b/gtk/gtkcoloreditor.c
@@ -188,16 +188,18 @@ dismiss_current_popup (GtkColorEditor *editor)
     }
 }
 
-static void
-popup_edit (GtkWidget      *widget,
-            GtkColorEditor *editor)
+void
+gtk_color_editor_popup_menu (GtkWidget *widget)
 {
+  GtkColorEditor *editor;
   GtkWidget *popup = NULL;
   GtkRoot *root;
   GtkWidget *focus;
   gint position;
   gint s, e;
 
+  editor = GTK_COLOR_EDITOR (gtk_widget_get_ancestor (widget, GTK_TYPE_COLOR_EDITOR));
+
   if (widget == editor->priv->sv_plane)
     {
       popup = editor->priv->sv_popup;
@@ -546,7 +548,6 @@ gtk_color_editor_class_init (GtkColorEditorClass *class)
   gtk_widget_class_bind_template_callback (widget_class, entry_text_changed);
   gtk_widget_class_bind_template_callback (widget_class, entry_apply);
   gtk_widget_class_bind_template_callback (widget_class, entry_focus_changed);
-  gtk_widget_class_bind_template_callback (widget_class, popup_edit);
   gtk_widget_class_bind_template_callback (widget_class, pick_color);
 }
 
diff --git a/gtk/gtkcoloreditorprivate.h b/gtk/gtkcoloreditorprivate.h
index c0d40b3510..d16b6f8c93 100644
--- a/gtk/gtkcoloreditorprivate.h
+++ b/gtk/gtkcoloreditorprivate.h
@@ -56,6 +56,8 @@ struct _GtkColorEditorClass
 GType       gtk_color_editor_get_type (void) G_GNUC_CONST;
 GtkWidget * gtk_color_editor_new      (void);
 
+void        gtk_color_editor_popup_menu (GtkWidget *control);
+
 G_END_DECLS
 
 #endif /* __GTK_COLOR_EDITOR_H__ */
diff --git a/gtk/gtkcolorplane.c b/gtk/gtkcolorplane.c
index f6eaf311a0..08fadc3ac1 100644
--- a/gtk/gtkcolorplane.c
+++ b/gtk/gtkcolorplane.c
@@ -28,6 +28,7 @@
 #include "gtksnapshot.h"
 #include "gtkprivate.h"
 #include "gtkeventcontrollerkey.h"
+#include "gtkcoloreditorprivate.h"
 
 struct _GtkColorPlanePrivate
 {
@@ -244,11 +245,18 @@ static void
 hold_action (GtkGestureLongPress *gesture,
              gdouble              x,
              gdouble              y,
-             GtkColorPlane       *plane)
+             GtkWidget           *plane)
 {
-  gboolean handled;
+  gtk_color_editor_popup_menu (plane);
+}
 
-  g_signal_emit_by_name (plane, "popup-menu", &handled);
+static gboolean
+popup_menu (GtkWidget *widget,
+            GVariant  *args,
+            gpointer   user_data)
+{
+  gtk_color_editor_popup_menu (widget);
+  return TRUE;
 }
 
 static void
@@ -530,6 +538,13 @@ gtk_color_plane_class_init (GtkColorPlaneClass *class)
                                                        GTK_TYPE_ADJUSTMENT,
                                                        GTK_PARAM_WRITABLE |
                                                        G_PARAM_CONSTRUCT_ONLY));
+
+  gtk_widget_class_add_binding (GTK_WIDGET_CLASS (class),
+                                GDK_KEY_F10, GDK_SHIFT_MASK,
+                                popup_menu, NULL);
+  gtk_widget_class_add_binding (GTK_WIDGET_CLASS (class),
+                                GDK_KEY_Menu, 0,
+                                popup_menu, NULL);
 }
 
 GtkWidget *
diff --git a/gtk/gtkcolorscale.c b/gtk/gtkcolorscale.c
index c5b7d3046a..c7017c0c56 100644
--- a/gtk/gtkcolorscale.c
+++ b/gtk/gtkcolorscale.c
@@ -29,6 +29,7 @@
 #include "gtkprivate.h"
 #include "gtkintl.h"
 #include "gtksnapshot.h"
+#include "gtkcoloreditorprivate.h"
 
 #include <math.h>
 
@@ -48,7 +49,7 @@ enum
 static void hold_action (GtkGestureLongPress *gesture,
                          gdouble              x,
                          gdouble              y,
-                         GtkColorScale       *scale);
+                         GtkWidget           *scale);
 
 G_DEFINE_TYPE_WITH_PRIVATE (GtkColorScale, gtk_color_scale, GTK_TYPE_SCALE)
 
@@ -250,11 +251,18 @@ static void
 hold_action (GtkGestureLongPress *gesture,
              gdouble              x,
              gdouble              y,
-             GtkColorScale       *scale)
+             GtkWidget           *scale)
 {
-  gboolean handled;
+  gtk_color_editor_popup_menu (scale);
+}
 
-  g_signal_emit_by_name (scale, "popup-menu", &handled);
+static gboolean
+popup_menu (GtkWidget *widget,
+            GVariant  *args,
+            gpointer   user_data)
+{
+  gtk_color_editor_popup_menu (widget);
+  return TRUE;
 }
 
 static void
@@ -280,6 +288,13 @@ gtk_color_scale_class_init (GtkColorScaleClass *class)
       g_param_spec_int ("scale-type", P_("Scale type"), P_("Scale type"),
                         0, 1, 0,
                         GTK_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
+
+  gtk_widget_class_add_binding (GTK_WIDGET_CLASS (class),
+                                GDK_KEY_F10, GDK_SHIFT_MASK,
+                                popup_menu, NULL);
+  gtk_widget_class_add_binding (GTK_WIDGET_CLASS (class),
+                                GDK_KEY_Menu, 0,
+                                popup_menu, NULL);
 }
 
 void
diff --git a/gtk/ui/gtkcoloreditor.ui b/gtk/ui/gtkcoloreditor.ui
index 4075102a5e..3d739428e7 100644
--- a/gtk/ui/gtkcoloreditor.ui
+++ b/gtk/ui/gtkcoloreditor.ui
@@ -88,7 +88,6 @@
                 <property name="adjustment">h_adj</property>
                 <property name="draw-value">False</property>
                 <property name="has-origin">False</property>
-                <signal name="popup-menu" handler="popup_edit" swapped="no"/>
                 <layout>
                   <property name="left-attach">0</property>
                   <property name="top-attach">1</property>
@@ -105,7 +104,6 @@
                 <style>
                   <class name="marks-before"/>
                 </style>
-                <signal name="popup-menu" handler="popup_edit" swapped="no"/>
                 <layout>
                   <property name="left-attach">1</property>
                   <property name="top-attach">2</property>
@@ -121,7 +119,6 @@
                 <property name="h-adjustment">h_adj</property>
                 <property name="s-adjustment">s_adj</property>
                 <property name="v-adjustment">v_adj</property>
-                <signal name="popup-menu" handler="popup_edit" swapped="no"/>
                 <layout>
                   <property name="left-attach">1</property>
                   <property name="top-attach">1</property>


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