diff options
author | Carlos Garnacho <carlosg@gnome.org> | 2018-03-05 14:59:07 +0100 |
---|---|---|
committer | Carlos Garnacho <carlosg@gnome.org> | 2018-04-05 19:26:53 +0200 |
commit | 6f4107c8defe142a2e87b4b9ab1d6b339f926434 (patch) | |
tree | 392cbdca542c8cb30603d39e1e92a7859390a51b | |
parent | 5081472d97cad3cbcc6fc8da27c30b236e8e9687 (diff) | |
download | gtk+-6f4107c8defe142a2e87b4b9ab1d6b339f926434.tar.gz |
gtkcolorplane: Stop using ::key-press-event
Use GtkEventControllerKey for the task
-rw-r--r-- | gtk/gtkcolorplane.c | 22 |
1 files changed, 13 insertions, 9 deletions
diff --git a/gtk/gtkcolorplane.c b/gtk/gtkcolorplane.c index 658efca1eb..c45adc2ba1 100644 --- a/gtk/gtkcolorplane.c +++ b/gtk/gtkcolorplane.c @@ -27,6 +27,7 @@ #include "gtkintl.h" #include "gtksnapshot.h" #include "gtkprivate.h" +#include "gtkeventcontrollerkey.h" struct _GtkColorPlanePrivate { @@ -38,6 +39,7 @@ struct _GtkColorPlanePrivate GtkGesture *drag_gesture; GtkGesture *long_press_gesture; + GtkEventController *key_controller; }; enum { @@ -308,16 +310,14 @@ error: } static gboolean -plane_key_press (GtkWidget *widget, - GdkEventKey *event) +key_controller_key_pressed (GtkEventControllerKey *controller, + guint keyval, + guint keycode, + GdkModifierType state, + GtkWidget *widget) { GtkColorPlane *plane = GTK_COLOR_PLANE (widget); gdouble step; - guint keyval, state; - - if (!gdk_event_get_keyval ((GdkEvent *) event, &keyval) || - !gdk_event_get_state ((GdkEvent *) event, &state)) - return GDK_EVENT_PROPAGATE; if ((state & GDK_MOD1_MASK) != 0) step = 0.1; @@ -337,7 +337,7 @@ plane_key_press (GtkWidget *widget, keyval == GDK_KEY_KP_Right) sv_move (plane, 0, step); else - return GTK_WIDGET_CLASS (gtk_color_plane_parent_class)->key_press_event (widget, event); + return FALSE; return TRUE; } @@ -424,6 +424,10 @@ gtk_color_plane_init (GtkColorPlane *plane) G_CALLBACK (hold_action), plane); gtk_gesture_single_set_touch_only (GTK_GESTURE_SINGLE (plane->priv->long_press_gesture), TRUE); + + plane->priv->key_controller = gtk_event_controller_key_new (GTK_WIDGET (plane)); + g_signal_connect (plane->priv->key_controller, "key-pressed", + G_CALLBACK (key_controller_key_pressed), plane); } static void @@ -439,6 +443,7 @@ plane_finalize (GObject *object) g_clear_object (&plane->priv->drag_gesture); g_clear_object (&plane->priv->long_press_gesture); + g_clear_object (&plane->priv->key_controller); G_OBJECT_CLASS (gtk_color_plane_parent_class)->finalize (object); } @@ -500,7 +505,6 @@ gtk_color_plane_class_init (GtkColorPlaneClass *class) widget_class->size_allocate = plane_size_allocate; widget_class->realize = plane_realize; widget_class->unrealize = plane_unrealize; - widget_class->key_press_event = plane_key_press; g_object_class_install_property (object_class, PROP_H_ADJUSTMENT, |