[gnome-builder/wip/slaf/colorpicker] gstyle-eyedropper: add movement keys to the pointer
- From: Sébastien Lafargue <slafargue src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-builder/wip/slaf/colorpicker] gstyle-eyedropper: add movement keys to the pointer
- Date: Sun, 17 Jul 2016 14:18:03 +0000 (UTC)
commit 13a60f281985938ddb32ce32cf4f1444defcdeae
Author: Sebastien Lafargue <slafargue gnome org>
Date: Sun Jul 17 16:04:25 2016 +0200
gstyle-eyedropper: add movement keys to the pointer
You can move the pointer with up/down/left/right
and same keypad cursor keys.
Maintaining Alt allow a 10px step per move.
contrib/gstyle/gstyle-eyedropper.c | 41 ++++++++++++++++++++++++++++++++++-
1 files changed, 39 insertions(+), 2 deletions(-)
---
diff --git a/contrib/gstyle/gstyle-eyedropper.c b/contrib/gstyle/gstyle-eyedropper.c
index fba0da8..f2d0983 100644
--- a/contrib/gstyle/gstyle-eyedropper.c
+++ b/contrib/gstyle/gstyle-eyedropper.c
@@ -46,6 +46,8 @@
#define MIN_ZOOM_FACTOR 1
#define MAX_ZOOM_FACTOR 20
+#define CURSOR_ALT_STEP 10
+
struct _GstyleEyedropper
{
GtkWindow parent_instance;
@@ -397,21 +399,56 @@ gstyle_eyedropper_key_pressed_cb (GstyleEyedropper *self,
GdkEventKey *event,
GtkWindow *window)
{
+ GdkSeat *seat;
+ GdkDevice *pointer;
+ GdkDevice *keyboard;
+ gint x, y;
+ gint dx = 0;
+ gint dy = 0;
+ gint state;
+
g_assert (GSTYLE_IS_EYEDROPPER (self));
g_assert (event != NULL);
g_assert (GTK_IS_WINDOW (window));
- /* TODO: handle cursor and picker trigger keys */
+ state = (event->state & gtk_accelerator_get_default_mod_mask () & GDK_MOD1_MASK);
switch (event->keyval)
{
case GDK_KEY_Escape:
release_grab (self);
+ return GDK_EVENT_STOP;
break;
- default:
+ case GDK_KEY_Up:
+ case GDK_KEY_KP_Up:
+ dy = (state == GDK_MOD1_MASK) ? -CURSOR_ALT_STEP : -1;
+ break;
+
+ case GDK_KEY_Down:
+ case GDK_KEY_KP_Down:
+ dy = (state == GDK_MOD1_MASK) ? CURSOR_ALT_STEP : 1;
break;
+
+ case GDK_KEY_Left:
+ case GDK_KEY_KP_Left:
+ dx = (state == GDK_MOD1_MASK) ? -CURSOR_ALT_STEP : -1;
+ break;
+
+ case GDK_KEY_Right:
+ case GDK_KEY_KP_Right:
+ dx = (state == GDK_MOD1_MASK) ? CURSOR_ALT_STEP : 1;
+ break;
+
+ default:
+ return GDK_EVENT_PROPAGATE;
}
+ keyboard = gdk_event_get_device ((GdkEvent *)event);
+ seat = gdk_device_get_seat (keyboard);
+ pointer = gdk_seat_get_pointer (seat);
+ gdk_device_get_position (pointer, NULL, &x, &y);
+ gdk_device_warp (pointer, self->screen, x + dx, y + dy);
+
return GDK_EVENT_STOP;
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]