[gtk/matthiasc/for-master: 50/50] colorscale: Bring back the right-click on slider



commit f637ab57f14c239fd5b6b50da646705f20cb9136
Author: Matthias Clasen <mclasen redhat com>
Date:   Mon May 18 11:31:42 2020 -0400

    colorscale: Bring back the right-click on slider
    
    This was lost when we converted the color editor to actions.

 gtk/gtkcolorscale.c | 25 +++++++++++++++++++++++++
 1 file changed, 25 insertions(+)
---
diff --git a/gtk/gtkcolorscale.c b/gtk/gtkcolorscale.c
index 2471687e4f..8f7354ab7d 100644
--- a/gtk/gtkcolorscale.c
+++ b/gtk/gtkcolorscale.c
@@ -21,6 +21,7 @@
 
 #include "gtkcolorchooserprivate.h"
 #include "gtkgesturelongpress.h"
+#include "gtkgestureclick.h"
 #include "gtkcolorutils.h"
 #include "gtkorientable.h"
 #include "gtkrangeprivate.h"
@@ -53,6 +54,12 @@ static void hold_action (GtkGestureLongPress *gesture,
                          gdouble              y,
                          GtkWidget           *scale);
 
+static void click_action (GtkGestureClick *gesture,
+                          guint            n_presses,
+                          double           x,
+                          double           y,
+                          GtkWidget       *scale);
+
 G_DEFINE_TYPE_WITH_PRIVATE (GtkColorScale, gtk_color_scale, GTK_TYPE_SCALE)
 
 void
@@ -160,6 +167,12 @@ gtk_color_scale_init (GtkColorScale *scale)
                                               GTK_PHASE_TARGET);
   gtk_widget_add_controller (GTK_WIDGET (scale), GTK_EVENT_CONTROLLER (gesture));
 
+  gesture = gtk_gesture_click_new ();
+  gtk_gesture_single_set_button (GTK_GESTURE_SINGLE (gesture), GDK_BUTTON_SECONDARY);
+  g_signal_connect (gesture, "pressed",
+                    G_CALLBACK (click_action), scale);
+  gtk_widget_add_controller (GTK_WIDGET (scale), GTK_EVENT_CONTROLLER (gesture));
+
   gtk_widget_add_css_class (GTK_WIDGET (scale), "color");
 }
 
@@ -256,6 +269,18 @@ hold_action (GtkGestureLongPress *gesture,
                               "s", gtk_widget_get_name (scale));
 }
 
+static void
+click_action (GtkGestureClick *gesture,
+              guint            n_presses,
+              double           x,
+              double           y,
+              GtkWidget       *scale)
+{
+  gtk_widget_activate_action (scale,
+                              "color.edit",
+                              "s", gtk_widget_get_name (scale));
+}
+
 static void
 scale_finalize (GObject *object)
 {


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