diff options
author | Ignacio Casal Quinteiro <qignacio@amazon.com> | 2020-06-30 11:02:33 +0200 |
---|---|---|
committer | Ignacio Casal Quinteiro <qignacio@amazon.com> | 2020-06-30 11:02:33 +0200 |
commit | d8d9d8bdf1d5c3567c5ba44a711d68e97c7a44a4 (patch) | |
tree | ce756102ab7a9059a6ac85d480c6dd031037211f | |
parent | 74ff79ef60e97a106259d6516e75087ada541408 (diff) | |
download | gtk+-wip/nacho/quartz-stylus.tar.gz |
quartz: factor out translate_axes methodwip/nacho/quartz-stylus
-rw-r--r-- | gdk/quartz/gdkevents-quartz.c | 64 |
1 files changed, 45 insertions, 19 deletions
diff --git a/gdk/quartz/gdkevents-quartz.c b/gdk/quartz/gdkevents-quartz.c index 0d492c1619..3320185e3e 100644 --- a/gdk/quartz/gdkevents-quartz.c +++ b/gdk/quartz/gdkevents-quartz.c @@ -42,7 +42,6 @@ #define GRIP_WIDTH 15 #define GRIP_HEIGHT 15 #define GDK_LION_RESIZE 5 -#define TABLET_AXES 5 #if MAC_OS_X_VERSION_MAX_ALLOWED < 1060 #define NSEventTypeRotate 13 @@ -1011,6 +1010,49 @@ fill_pinch_event (GdkWindow *window, } #endif /* OSX Version >= 10.8 */ +static gdouble * +translate_axes (GdkDevice *device, + gdouble x, + gdouble y, + NSEvent *nsevent) +{ + guint n_axes, i; + gdouble *axes; + + g_object_get (device, "n-axes", &n_axes, NULL); + axes = g_new0 (gdouble, n_axes); + + for (i = 0; i < n_axes; i++) + { + GdkAxisUse use; + + use = gdk_device_get_axis_use (device, i); + switch (use) + { + case GDK_AXIS_X: + axes[i] = x; + break; + case GDK_AXIS_Y: + axes[i] = y; + break; + case GDK_AXIS_PRESSURE: + axes[i] = [nsevent pressure]; + break; + case GDK_AXIS_XTILT: + axes[i] = [nsevent tilt].x; + break; + case GDK_AXIS_YTILT: + axes[i] = [nsevent tilt].y; + break; + default: + g_warn_if_reached (); + break; + } + } + + return axes; +} + static void fill_button_event (GdkWindow *window, GdkEvent *event, @@ -1053,15 +1095,7 @@ fill_button_event (GdkWindow *window, nsevent); if ([nsevent subtype] == GDK_QUARTZ_EVENT_SUBTYPE_TABLET_POINT) - { - axes = g_new (gdouble, TABLET_AXES); - - axes[0] = x; - axes[1] = y; - axes[2] = [nsevent pressure]; - axes[3] = [nsevent tilt].x; - axes[4] = [nsevent tilt].y; - } + axes = translate_axes (event_device, x, y, nsevent); event->any.type = type; event->button.window = window; @@ -1096,15 +1130,7 @@ fill_motion_event (GdkWindow *window, nsevent); if ([nsevent subtype] == GDK_QUARTZ_EVENT_SUBTYPE_TABLET_POINT) - { - axes = g_new (gdouble, TABLET_AXES); - - axes[0] = x; - axes[1] = y; - axes[2] = [nsevent pressure]; - axes[3] = [nsevent tilt].x; - axes[4] = [nsevent tilt].y; - } + axes = translate_axes (event_device, x, y, nsevent); event->any.type = GDK_MOTION_NOTIFY; event->motion.window = window; |