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 @@ -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 @@ h_adj False False - 0 1 @@ -105,7 +104,6 @@ - 1 2 @@ -121,7 +119,6 @@ h_adj s_adj v_adj - 1 1