From 3285f52dc8dce89faae4ff811156aa039427ea96 Mon Sep 17 00:00:00 2001 From: Carlos Garnacho Date: Tue, 28 Jul 2020 15:25:28 +0200 Subject: [PATCH 01/13] gdk: Drop GDK_SOURCE_CURSOR Looking at the xf86-input-wacom driver code, this is not even a thing anymore. Drop this device type, in modern days there's GDK_DEVICE_TOOL_TYPE_MOUSE for this. --- gdk/gdkdevice.h | 2 -- gdk/gdkseatdefault.c | 1 - gdk/x11/gdkdevicemanager-xi2.c | 4 +--- 3 files changed, 1 insertion(+), 6 deletions(-) diff --git a/gdk/gdkdevice.h b/gdk/gdkdevice.h index 7fe2aebb84..b15c4d2aa9 100644 --- a/gdk/gdkdevice.h +++ b/gdk/gdkdevice.h @@ -40,7 +40,6 @@ typedef struct _GdkTimeCoord GdkTimeCoord; * @GDK_SOURCE_MOUSE: the device is a mouse. (This will be reported for the core * pointer, even if it is something else, such as a trackball.) * @GDK_SOURCE_PEN: the device is a stylus of a graphics tablet or similar device. - * @GDK_SOURCE_CURSOR: the device is a graphics tablet “puck” or similar device. * @GDK_SOURCE_KEYBOARD: the device is a keyboard. * @GDK_SOURCE_TOUCHSCREEN: the device is a direct-input touch device, such * as a touchscreen or tablet @@ -56,7 +55,6 @@ typedef enum { GDK_SOURCE_MOUSE, GDK_SOURCE_PEN, - GDK_SOURCE_CURSOR, GDK_SOURCE_KEYBOARD, GDK_SOURCE_TOUCHSCREEN, GDK_SOURCE_TOUCHPAD, diff --git a/gdk/gdkseatdefault.c b/gdk/gdkseatdefault.c index 04906898fd..bf7537ef5a 100644 --- a/gdk/gdkseatdefault.c +++ b/gdk/gdkseatdefault.c @@ -228,7 +228,6 @@ device_get_capability (GdkDevice *device) case GDK_SOURCE_TOUCHSCREEN: return GDK_SEAT_CAPABILITY_TOUCH; case GDK_SOURCE_PEN: - case GDK_SOURCE_CURSOR: return GDK_SEAT_CAPABILITY_TABLET_STYLUS; case GDK_SOURCE_TABLET_PAD: return GDK_SEAT_CAPABILITY_TABLET_PAD; diff --git a/gdk/x11/gdkdevicemanager-xi2.c b/gdk/x11/gdkdevicemanager-xi2.c index 67dccb5b87..69b6cbde76 100644 --- a/gdk/x11/gdkdevicemanager-xi2.c +++ b/gdk/x11/gdkdevicemanager-xi2.c @@ -489,9 +489,7 @@ create_device (GdkX11DeviceManagerXI2 *device_manager, tmp_name = g_ascii_strdown (dev->name, -1); - if (strstr (tmp_name, "cursor")) - input_source = GDK_SOURCE_CURSOR; - else if (strstr (tmp_name, " pad")) + if (strstr (tmp_name, " pad")) input_source = GDK_SOURCE_TABLET_PAD; else if (strstr (tmp_name, "wacom") || strstr (tmp_name, "pen") || From 6a4277a9a9871cc5bc85dc5d11b7216474f4af72 Mon Sep 17 00:00:00 2001 From: Carlos Garnacho Date: Tue, 28 Jul 2020 15:44:09 +0200 Subject: [PATCH 02/13] gtkpopover: Move away from gdk_device_get_state() Use gdk_device_get_modifier_state() poking the keyboard and keymap, instead of this function. --- gtk/gtkpopover.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/gtk/gtkpopover.c b/gtk/gtkpopover.c index 62ae3c902a..d77d225a1e 100644 --- a/gtk/gtkpopover.c +++ b/gtk/gtkpopover.c @@ -602,7 +602,6 @@ close_menu (GtkPopover *popover) static gboolean gtk_popover_has_mnemonic_modifier_pressed (GtkPopover *popover) { - GtkPopoverPrivate *priv = gtk_popover_get_instance_private (popover); GList *seats, *s; gboolean retval = FALSE; @@ -610,10 +609,10 @@ gtk_popover_has_mnemonic_modifier_pressed (GtkPopover *popover) for (s = seats; s; s = s->next) { - GdkDevice *dev = gdk_seat_get_pointer (s->data); + GdkDevice *dev = gdk_seat_get_keyboard (s->data); GdkModifierType mask; - gdk_device_get_state (dev, priv->surface, NULL, &mask); + mask = gdk_device_get_modifier_state (dev); if ((mask & gtk_accelerator_get_default_mod_mask ()) == GDK_ALT_MASK) { retval = TRUE; From 5f8258109e9bad2bf2e19cf9b65ba8ed35182dd8 Mon Sep 17 00:00:00 2001 From: Carlos Garnacho Date: Tue, 28 Jul 2020 15:46:05 +0200 Subject: [PATCH 03/13] gtkwindow: Move away from gdk_device_get_state() Use gdk_device_get_modifier_state() poking the keyboard and keymap, instead of this function. --- gtk/gtkwindow.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/gtk/gtkwindow.c b/gtk/gtkwindow.c index a0fdd39229..a158c6cb09 100644 --- a/gtk/gtkwindow.c +++ b/gtk/gtkwindow.c @@ -4749,7 +4749,6 @@ gtk_window_real_activate_focus (GtkWindow *window) static gboolean gtk_window_has_mnemonic_modifier_pressed (GtkWindow *window) { - GtkWindowPrivate *priv = gtk_window_get_instance_private (window); GList *seats, *s; gboolean retval = FALSE; @@ -4757,10 +4756,10 @@ gtk_window_has_mnemonic_modifier_pressed (GtkWindow *window) for (s = seats; s; s = s->next) { - GdkDevice *dev = gdk_seat_get_pointer (s->data); + GdkDevice *dev = gdk_seat_get_keyboard (s->data); GdkModifierType mask; - gdk_device_get_state (dev, priv->surface, NULL, &mask); + mask = gdk_device_get_modifier_state (dev); if ((mask & gtk_accelerator_get_default_mod_mask ()) == GDK_ALT_MASK) { retval = TRUE; From a2876b5cb43d6e77ee0394d9985aa5f2947d02d3 Mon Sep 17 00:00:00 2001 From: Carlos Garnacho Date: Tue, 28 Jul 2020 15:50:15 +0200 Subject: [PATCH 04/13] gdkdevice: Remove gdk_device_get_state() This is not needed nor recommended anymore, all reasons to maybe need this were all kept within gdk. --- docs/reference/gdk/gdk4-sections.txt | 1 - gdk/broadway/gdkdevice-broadway.c | 22 -------- gdk/gdkdevice.c | 31 ----------- gdk/gdkdevice.h | 5 -- gdk/macos/gdkmacosdevice.c | 21 -------- gdk/wayland/gdkdevice-wayland.c | 18 ------- gdk/win32/gdkdevice-virtual.c | 14 ----- gdk/win32/gdkdevice-win32.c | 18 ------- gdk/win32/gdkdevice-wintab.c | 28 ---------- gdk/x11/gdkdevice-xi2.c | 77 ---------------------------- 10 files changed, 235 deletions(-) diff --git a/docs/reference/gdk/gdk4-sections.txt b/docs/reference/gdk/gdk4-sections.txt index d926d1b8b0..edff521830 100644 --- a/docs/reference/gdk/gdk4-sections.txt +++ b/docs/reference/gdk/gdk4-sections.txt @@ -374,7 +374,6 @@ gdk_device_get_scroll_lock_state gdk_device_has_bidi_layouts -gdk_device_get_state gdk_device_get_surface_at_position GdkTimeCoord gdk_device_get_axis diff --git a/gdk/broadway/gdkdevice-broadway.c b/gdk/broadway/gdkdevice-broadway.c index 8fe6eab346..7b2d45670b 100644 --- a/gdk/broadway/gdkdevice-broadway.c +++ b/gdk/broadway/gdkdevice-broadway.c @@ -23,10 +23,6 @@ #include "gdksurfaceprivate.h" #include "gdkprivate-broadway.h" -static void gdk_broadway_device_get_state (GdkDevice *device, - GdkSurface *surface, - double *axes, - GdkModifierType *mask); static void gdk_broadway_device_set_surface_cursor (GdkDevice *device, GdkSurface *surface, GdkCursor *cursor); @@ -58,7 +54,6 @@ gdk_broadway_device_class_init (GdkBroadwayDeviceClass *klass) { GdkDeviceClass *device_class = GDK_DEVICE_CLASS (klass); - device_class->get_state = gdk_broadway_device_get_state; device_class->set_surface_cursor = gdk_broadway_device_set_surface_cursor; device_class->query_state = gdk_broadway_device_query_state; device_class->grab = gdk_broadway_device_grab; @@ -77,23 +72,6 @@ gdk_broadway_device_init (GdkBroadwayDevice *device_core) _gdk_device_add_axis (device, GDK_AXIS_Y, 0, 0, 1); } -static void -gdk_broadway_device_get_state (GdkDevice *device, - GdkSurface *surface, - double *axes, - GdkModifierType *mask) -{ - double x, y; - - gdk_surface_get_device_position (surface, device, &x, &y, mask); - - if (axes) - { - axes[0] = x; - axes[1] = y; - } -} - static void gdk_broadway_device_set_surface_cursor (GdkDevice *device, GdkSurface *surface, diff --git a/gdk/gdkdevice.c b/gdk/gdkdevice.c index 745b8910a0..3a57c64860 100644 --- a/gdk/gdkdevice.c +++ b/gdk/gdkdevice.c @@ -532,37 +532,6 @@ gdk_device_get_property (GObject *object, } } -/** - * gdk_device_get_state: (skip) - * @device: a #GdkDevice. - * @surface: a #GdkSurface. - * @axes: (nullable) (array): an array of doubles to store the values of - * the axes of @device in, or %NULL. - * @mask: (optional) (out): location to store the modifiers, or %NULL. - * - * Gets the current state of a pointer device relative to @surface. As a - * physical device’s coordinates are those of its logical pointer, this - * function may not be called on devices of type %GDK_DEVICE_TYPE_PHYSICAL, - * unless there is an ongoing grab on them. - * - * See also: gdk_seat_grab(). - */ -void -gdk_device_get_state (GdkDevice *device, - GdkSurface *surface, - double *axes, - GdkModifierType *mask) -{ - g_return_if_fail (GDK_IS_DEVICE (device)); - g_return_if_fail (device->source != GDK_SOURCE_KEYBOARD); - g_return_if_fail (GDK_IS_SURFACE (surface)); - g_return_if_fail (gdk_device_get_device_type (device) != GDK_DEVICE_TYPE_PHYSICAL || - gdk_display_device_is_grabbed (gdk_device_get_display (device), device)); - - if (GDK_DEVICE_GET_CLASS (device)->get_state) - GDK_DEVICE_GET_CLASS (device)->get_state (device, surface, axes, mask); -} - /* * gdk_device_get_position: * @device: pointer device to query status about. diff --git a/gdk/gdkdevice.h b/gdk/gdkdevice.h index b15c4d2aa9..5a369352b4 100644 --- a/gdk/gdkdevice.h +++ b/gdk/gdkdevice.h @@ -111,11 +111,6 @@ GdkAxisUse gdk_device_get_axis_use (GdkDevice *device, guint index_); -GDK_AVAILABLE_IN_ALL -void gdk_device_get_state (GdkDevice *device, - GdkSurface *surface, - double *axes, - GdkModifierType *mask); GDK_AVAILABLE_IN_ALL GdkSurface * gdk_device_get_surface_at_position (GdkDevice *device, double *win_x, diff --git a/gdk/macos/gdkmacosdevice.c b/gdk/macos/gdkmacosdevice.c index 8dbbe1ac61..93a909c4c2 100644 --- a/gdk/macos/gdkmacosdevice.c +++ b/gdk/macos/gdkmacosdevice.c @@ -126,26 +126,6 @@ gdk_macos_device_ungrab (GdkDevice *device, _gdk_display_device_grab_update (display, device, device, 0); } -static void -gdk_macos_device_get_state (GdkDevice *device, - GdkSurface *surface, - double *axes, - GdkModifierType *mask) -{ - double x_pos, y_pos; - - g_assert (GDK_IS_MACOS_DEVICE (device)); - g_assert (GDK_IS_MACOS_SURFACE (surface)); - - gdk_surface_get_device_position (surface, device, &x_pos, &y_pos, mask); - - if (axes != NULL) - { - axes[0] = x_pos; - axes[1] = y_pos; - } -} - static void gdk_macos_device_query_state (GdkDevice *device, GdkSurface *surface, @@ -192,7 +172,6 @@ gdk_macos_device_class_init (GdkMacosDeviceClass *klass) { GdkDeviceClass *device_class = GDK_DEVICE_CLASS (klass); - device_class->get_state = gdk_macos_device_get_state; device_class->grab = gdk_macos_device_grab; device_class->query_state = gdk_macos_device_query_state; device_class->set_surface_cursor = gdk_macos_device_set_surface_cursor; diff --git a/gdk/wayland/gdkdevice-wayland.c b/gdk/wayland/gdkdevice-wayland.c index 0715bdeea5..8096782ad0 100644 --- a/gdk/wayland/gdkdevice-wayland.c +++ b/gdk/wayland/gdkdevice-wayland.c @@ -307,23 +307,6 @@ static void deliver_key_event (GdkWaylandSeat *seat, uint32_t state, gboolean from_key_repeat); -static void -gdk_wayland_device_get_state (GdkDevice *device, - GdkSurface *surface, - double *axes, - GdkModifierType *mask) -{ - double x, y; - - gdk_surface_get_device_position (surface, device, &x, &y, mask); - - if (axes) - { - axes[0] = x; - axes[1] = y; - } -} - static void gdk_wayland_pointer_stop_cursor_animation (GdkWaylandPointerData *pointer) { @@ -814,7 +797,6 @@ gdk_wayland_device_class_init (GdkWaylandDeviceClass *klass) { GdkDeviceClass *device_class = GDK_DEVICE_CLASS (klass); - device_class->get_state = gdk_wayland_device_get_state; device_class->set_surface_cursor = gdk_wayland_device_set_surface_cursor; device_class->query_state = gdk_wayland_device_query_state; device_class->grab = gdk_wayland_device_grab; diff --git a/gdk/win32/gdkdevice-virtual.c b/gdk/win32/gdkdevice-virtual.c index c63bb7fa9a..d5f6b91644 100644 --- a/gdk/win32/gdkdevice-virtual.c +++ b/gdk/win32/gdkdevice-virtual.c @@ -59,19 +59,6 @@ _gdk_device_virtual_set_active (GdkDevice *device, g_signal_emit_by_name (G_OBJECT (device), "changed"); } -static void -gdk_device_virtual_get_state (GdkDevice *device, - GdkSurface *window, - double *axes, - GdkModifierType *mask) -{ - GdkDeviceVirtual *virtual = GDK_DEVICE_VIRTUAL (device); - GdkDevice *active = virtual->active_device; - - GDK_DEVICE_GET_CLASS (active)->get_state (active, - window, axes, mask); -} - static void gdk_device_virtual_set_surface_cursor (GdkDevice *device, GdkSurface *window, @@ -172,7 +159,6 @@ gdk_device_virtual_class_init (GdkDeviceVirtualClass *klass) { GdkDeviceClass *device_class = GDK_DEVICE_CLASS (klass); - device_class->get_state = gdk_device_virtual_get_state; device_class->set_surface_cursor = gdk_device_virtual_set_surface_cursor; device_class->query_state = gdk_device_virtual_query_state; device_class->grab = gdk_device_virtual_grab; diff --git a/gdk/win32/gdkdevice-win32.c b/gdk/win32/gdkdevice-win32.c index 67b16bd51f..bf74f608e7 100644 --- a/gdk/win32/gdkdevice-win32.c +++ b/gdk/win32/gdkdevice-win32.c @@ -29,23 +29,6 @@ G_DEFINE_TYPE (GdkDeviceWin32, gdk_device_win32, GDK_TYPE_DEVICE) -static void -gdk_device_win32_get_state (GdkDevice *device, - GdkSurface *window, - double *axes, - GdkModifierType *mask) -{ - double x, y; - - gdk_surface_get_device_position (window, device, &x, &y, mask); - - if (axes) - { - axes[0] = round (x); - axes[1] = round (y); - } -} - static void gdk_device_win32_set_surface_cursor (GdkDevice *device, GdkSurface *window, @@ -224,7 +207,6 @@ gdk_device_win32_class_init (GdkDeviceWin32Class *klass) { GdkDeviceClass *device_class = GDK_DEVICE_CLASS (klass); - device_class->get_state = gdk_device_win32_get_state; device_class->set_surface_cursor = gdk_device_win32_set_surface_cursor; device_class->query_state = gdk_device_win32_query_state; device_class->grab = gdk_device_win32_grab; diff --git a/gdk/win32/gdkdevice-wintab.c b/gdk/win32/gdkdevice-wintab.c index 04acb571fd..efec9dbc74 100644 --- a/gdk/win32/gdkdevice-wintab.c +++ b/gdk/win32/gdkdevice-wintab.c @@ -54,33 +54,6 @@ get_current_mask (void) return mask; } -static void -gdk_device_wintab_get_state (GdkDevice *device, - GdkSurface *window, - double *axes, - GdkModifierType *mask) -{ - GdkDeviceWintab *device_wintab; - - device_wintab = GDK_DEVICE_WINTAB (device); - - /* For now just use the last known button and axis state of the device. - * Since graphical tablets send an insane amount of motion events each - * second, the info should be fairly up to date */ - if (mask) - { - *mask = get_current_mask (); - *mask &= 0xFF; /* Mask away core pointer buttons */ - *mask |= ((device_wintab->button_state << 8) - & (GDK_BUTTON1_MASK | GDK_BUTTON2_MASK - | GDK_BUTTON3_MASK | GDK_BUTTON4_MASK - | GDK_BUTTON5_MASK)); - } - - if (axes && device_wintab->last_axis_data) - _gdk_device_wintab_translate_axes (device_wintab, window, axes, NULL, NULL); -} - static void gdk_device_wintab_set_surface_cursor (GdkDevice *device, GdkSurface *window, @@ -256,7 +229,6 @@ gdk_device_wintab_class_init (GdkDeviceWintabClass *klass) { GdkDeviceClass *device_class = GDK_DEVICE_CLASS (klass); - device_class->get_state = gdk_device_wintab_get_state; device_class->set_surface_cursor = gdk_device_wintab_set_surface_cursor; device_class->query_state = gdk_device_wintab_query_state; device_class->grab = gdk_device_wintab_grab; diff --git a/gdk/x11/gdkdevice-xi2.c b/gdk/x11/gdkdevice-xi2.c index 62507c1a3b..4aea232070 100644 --- a/gdk/x11/gdkdevice-xi2.c +++ b/gdk/x11/gdkdevice-xi2.c @@ -70,10 +70,6 @@ static void gdk_x11_device_xi2_set_property (GObject *object, const GValue *value, GParamSpec *pspec); -static void gdk_x11_device_xi2_get_state (GdkDevice *device, - GdkSurface *surface, - double *axes, - GdkModifierType *mask); static void gdk_x11_device_xi2_set_surface_cursor (GdkDevice *device, GdkSurface *surface, GdkCursor *cursor); @@ -115,7 +111,6 @@ gdk_x11_device_xi2_class_init (GdkX11DeviceXI2Class *klass) object_class->get_property = gdk_x11_device_xi2_get_property; object_class->set_property = gdk_x11_device_xi2_set_property; - device_class->get_state = gdk_x11_device_xi2_get_state; device_class->set_surface_cursor = gdk_x11_device_xi2_set_surface_cursor; device_class->query_state = gdk_x11_device_xi2_query_state; device_class->grab = gdk_x11_device_xi2_grab; @@ -187,78 +182,6 @@ gdk_x11_device_xi2_set_property (GObject *object, } } -static void -gdk_x11_device_xi2_get_state (GdkDevice *device, - GdkSurface *surface, - double *axes, - GdkModifierType *mask) -{ - GdkX11DeviceXI2 *device_xi2 = GDK_X11_DEVICE_XI2 (device); - - if (axes) - { - GdkDisplay *display; - XIDeviceInfo *info; - int i, j, ndevices; - Screen *xscreen; - - display = gdk_device_get_display (device); - xscreen = GDK_X11_SCREEN (GDK_X11_DISPLAY (display)->screen)->xscreen; - - gdk_x11_display_error_trap_push (display); - info = XIQueryDevice (GDK_DISPLAY_XDISPLAY (display), - device_xi2->device_id, &ndevices); - gdk_x11_display_error_trap_pop_ignored (display); - - for (i = 0, j = 0; info && i < info->num_classes; i++) - { - XIAnyClassInfo *class_info = info->classes[i]; - GdkAxisUse use; - double value; - - if (class_info->type != XIValuatorClass) - continue; - - value = ((XIValuatorClassInfo *) class_info)->value; - use = gdk_device_get_axis_use (device, j); - - switch ((guint) use) - { - case GDK_AXIS_X: - case GDK_AXIS_Y: - case GDK_AXIS_IGNORE: - { - int root_x, root_y; - - /* FIXME: Maybe root coords caching should happen here */ - gdk_surface_get_origin (surface, &root_x, &root_y); - _gdk_device_translate_screen_coord (device, surface, - root_x, root_y, - WidthOfScreen (xscreen), - HeightOfScreen (xscreen), - j, value, - &axes[j]); - } - break; - default: - _gdk_device_translate_axis (device, j, value, &axes[j]); - break; - } - - j++; - } - - if (info) - XIFreeDeviceInfo (info); - } - - if (mask) - gdk_x11_device_xi2_query_state (device, surface, - NULL, - NULL, NULL, - mask); -} - static void gdk_x11_device_xi2_set_surface_cursor (GdkDevice *device, GdkSurface *surface, From 1b846e29c7b7ae626426a0ee4295cb1d001531ee Mon Sep 17 00:00:00 2001 From: Carlos Garnacho Date: Tue, 28 Jul 2020 16:00:02 +0200 Subject: [PATCH 05/13] docs: Correct migration note A mentioned API call is now internal. --- docs/reference/gtk/migrating-3to4.md | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/docs/reference/gtk/migrating-3to4.md b/docs/reference/gtk/migrating-3to4.md index a55c7b033a..0d3bf4ab21 100644 --- a/docs/reference/gtk/migrating-3to4.md +++ b/docs/reference/gtk/migrating-3to4.md @@ -309,10 +309,9 @@ use the #GtkWindow:modal property of the dialog. ### Adapt to coordinate API changes A number of coordinate APIs in GTK 3 had _double variants: -gdk_device_get_position(), gdk_device_get_surface_at_position(), -gdk_surface_get_device_position(). These have been changed to use -doubles, and the _double variants have been removed. Update your -code accordingly. +gdk_device_get_surface_at_position(), gdk_surface_get_device_position(). +These have been changed to use doubles, and the _double variants +have been removed. Update your code accordingly. Any APIs that deal with global (or root) coordinates have been removed in GTK 4, since not all backends support them. You should From 254007a142a41435ff16b1cb7859040c188ffae8 Mon Sep 17 00:00:00 2001 From: Carlos Garnacho Date: Tue, 28 Jul 2020 16:31:54 +0200 Subject: [PATCH 06/13] gdk: Add gdk_device_tool_get_axes() Axes are actually a per-tool property, we just adapt devices to the current tool. --- docs/reference/gdk/gdk4-sections.txt | 1 + gdk/gdkdevicetool.c | 8 ++++++++ gdk/gdkdevicetool.h | 3 +++ 3 files changed, 12 insertions(+) diff --git a/docs/reference/gdk/gdk4-sections.txt b/docs/reference/gdk/gdk4-sections.txt index edff521830..7e142c3310 100644 --- a/docs/reference/gdk/gdk4-sections.txt +++ b/docs/reference/gdk/gdk4-sections.txt @@ -382,6 +382,7 @@ gdk_device_get_axis gdk_device_tool_get_serial gdk_device_tool_get_tool_type gdk_device_tool_get_hardware_id +gdk_device_tool_get_axes GDK_TYPE_AXIS_USE diff --git a/gdk/gdkdevicetool.c b/gdk/gdkdevicetool.c index a56f8e4b2b..efd3a6c6a7 100644 --- a/gdk/gdkdevicetool.c +++ b/gdk/gdkdevicetool.c @@ -209,3 +209,11 @@ gdk_device_tool_get_tool_type (GdkDeviceTool *tool) return tool->type; } + +GdkAxisFlags +gdk_device_tool_get_axes (GdkDeviceTool *tool) +{ + g_return_val_if_fail (tool != NULL, 0); + + return tool->tool_axes; +} diff --git a/gdk/gdkdevicetool.h b/gdk/gdkdevicetool.h index c48ff628e4..d1e5b28e21 100644 --- a/gdk/gdkdevicetool.h +++ b/gdk/gdkdevicetool.h @@ -71,6 +71,9 @@ guint64 gdk_device_tool_get_hardware_id (GdkDeviceTool *tool); GDK_AVAILABLE_IN_ALL GdkDeviceToolType gdk_device_tool_get_tool_type (GdkDeviceTool *tool); +GDK_AVAILABLE_IN_ALL +GdkAxisFlags gdk_device_tool_get_axes (GdkDeviceTool *tool); + G_END_DECLS #endif /* __GDK_DEVICE_TOOL_H__ */ From b52ad33031c06ad517a704bc055f93c9920e4b4f Mon Sep 17 00:00:00 2001 From: Carlos Garnacho Date: Tue, 28 Jul 2020 16:51:41 +0200 Subject: [PATCH 07/13] gdk: Add gdk_seat_get_tools() API call There's GdkSeat::tool-added and ::tool-removed, but there's no API to query the known tools. Add this call. --- docs/reference/gdk/gdk4-sections.txt | 1 + gdk/gdkseat.c | 37 +++++++++++++++++++++++++++- gdk/gdkseat.h | 2 ++ gdk/gdkseatdefault.c | 16 +++++------- gdk/gdkseatprivate.h | 4 +-- gdk/wayland/gdkdevice-wayland.c | 17 +++++++++++++ 6 files changed, 63 insertions(+), 14 deletions(-) diff --git a/docs/reference/gdk/gdk4-sections.txt b/docs/reference/gdk/gdk4-sections.txt index 7e142c3310..a863bae857 100644 --- a/docs/reference/gdk/gdk4-sections.txt +++ b/docs/reference/gdk/gdk4-sections.txt @@ -439,6 +439,7 @@ gdk_seat_get_capabilities gdk_seat_get_pointer gdk_seat_get_keyboard gdk_seat_get_physical_devices +gdk_seat_get_tools GDK_SEAT diff --git a/gdk/gdkseat.c b/gdk/gdkseat.c index 6505169c33..8b6a88997c 100644 --- a/gdk/gdkseat.c +++ b/gdk/gdkseat.c @@ -22,6 +22,7 @@ #include #include "gdkdisplay.h" #include "gdkdevice.h" +#include "gdkdevicetoolprivate.h" #include "gdkseatprivate.h" #include "gdkdeviceprivate.h" #include "gdkintl.h" @@ -438,11 +439,45 @@ GdkDeviceTool * gdk_seat_get_tool (GdkSeat *seat, guint64 serial, guint64 hw_id) +{ + GdkDeviceTool *match = NULL; + GList *tools, *l; + + tools = gdk_seat_get_tools (seat); + + for (l = tools; l; l = l->next) + { + GdkDeviceTool *tool = l->data; + + if (tool->serial == serial && tool->hw_id == hw_id) + { + match = tool; + break; + } + } + + g_list_free (tools); + + return match; +} + +/** + * gdk_seat_get_tools: + * @seat: A #GdkSeat + * + * Returns all #GdkDeviceTools that are known to the + * application. + * + * Returns: (transfer container) (element-type Gdk.DeviceTool): A list of tools. Free with + * g_list_free(). + **/ +GList * +gdk_seat_get_tools (GdkSeat *seat) { GdkSeatClass *seat_class; g_return_val_if_fail (GDK_IS_SEAT (seat), NULL); seat_class = GDK_SEAT_GET_CLASS (seat); - return seat_class->get_tool (seat, serial, hw_id); + return seat_class->get_tools (seat); } diff --git a/gdk/gdkseat.h b/gdk/gdkseat.h index 960a6e306b..1802d5348f 100644 --- a/gdk/gdkseat.h +++ b/gdk/gdkseat.h @@ -78,6 +78,8 @@ GDK_AVAILABLE_IN_ALL GList * gdk_seat_get_physical_devices (GdkSeat *seat, GdkSeatCapabilities capabilities); +GList * gdk_seat_get_tools (GdkSeat *seat); + GDK_AVAILABLE_IN_ALL GdkDevice * gdk_seat_get_pointer (GdkSeat *seat); GDK_AVAILABLE_IN_ALL diff --git a/gdk/gdkseatdefault.c b/gdk/gdkseatdefault.c index bf7537ef5a..dd44233a6b 100644 --- a/gdk/gdkseatdefault.c +++ b/gdk/gdkseatdefault.c @@ -279,13 +279,12 @@ gdk_seat_default_get_physical_devices (GdkSeat *seat, return devices; } -static GdkDeviceTool * -gdk_seat_default_get_tool (GdkSeat *seat, - guint64 serial, - guint64 hw_id) +static GList * +gdk_seat_default_get_tools (GdkSeat *seat) { GdkSeatDefaultPrivate *priv; GdkDeviceTool *tool; + GList *tools = NULL; guint i; priv = gdk_seat_default_get_instance_private (GDK_SEAT_DEFAULT (seat)); @@ -296,12 +295,10 @@ gdk_seat_default_get_tool (GdkSeat *seat, for (i = 0; i < priv->tools->len; i++) { tool = g_ptr_array_index (priv->tools, i); - - if (tool->serial == serial && tool->hw_id == hw_id) - return tool; + tools = g_list_prepend (tools, tool); } - return NULL; + return tools; } static void @@ -319,8 +316,7 @@ gdk_seat_default_class_init (GdkSeatDefaultClass *klass) seat_class->get_logical_device = gdk_seat_default_get_logical_device; seat_class->get_physical_devices = gdk_seat_default_get_physical_devices; - - seat_class->get_tool = gdk_seat_default_get_tool; + seat_class->get_tools = gdk_seat_default_get_tools; } static void diff --git a/gdk/gdkseatprivate.h b/gdk/gdkseatprivate.h index 07672f6a44..90e8a8674c 100644 --- a/gdk/gdkseatprivate.h +++ b/gdk/gdkseatprivate.h @@ -57,9 +57,7 @@ struct _GdkSeatClass GList * (* get_physical_devices) (GdkSeat *seat, GdkSeatCapabilities capabilities); - GdkDeviceTool * (* get_tool) (GdkSeat *seat, - guint64 serial, - guint64 tool_id); + GList * (* get_tools) (GdkSeat *seat); }; void gdk_seat_device_added (GdkSeat *seat, diff --git a/gdk/wayland/gdkdevice-wayland.c b/gdk/wayland/gdkdevice-wayland.c index 8096782ad0..d9a9a95672 100644 --- a/gdk/wayland/gdkdevice-wayland.c +++ b/gdk/wayland/gdkdevice-wayland.c @@ -4749,6 +4749,22 @@ gdk_wayland_seat_get_physical_devices (GdkSeat *seat, return physical_devices; } +static GList * +gdk_wayland_seat_get_tools (GdkSeat *seat) +{ + GdkWaylandSeat *wayland_seat = GDK_WAYLAND_SEAT (seat); + GList *tools = NULL, *l; + + for (l = wayland_seat->tablet_tools; l; l = l->next) + { + GdkWaylandTabletToolData *tool = l->data; + + tools = g_list_prepend (tools, tool->tool); + } + + return tools; +} + static void gdk_wayland_seat_class_init (GdkWaylandSeatClass *klass) { @@ -4762,6 +4778,7 @@ gdk_wayland_seat_class_init (GdkWaylandSeatClass *klass) seat_class->ungrab = gdk_wayland_seat_ungrab; seat_class->get_logical_device = gdk_wayland_seat_get_logical_device; seat_class->get_physical_devices = gdk_wayland_seat_get_physical_devices; + seat_class->get_tools = gdk_wayland_seat_get_tools; } static void From 2736633a60c5b8874937d8c82c0586864bce75bf Mon Sep 17 00:00:00 2001 From: Carlos Garnacho Date: Tue, 28 Jul 2020 17:07:48 +0200 Subject: [PATCH 08/13] inspector: Show tool axes, instead of device axes We are moving away from the latter as they are inconsistent with Wayland. Make the inspector introspect known tools and their info, instead. --- gtk/inspector/general.c | 70 ++++++++++++++++++++++++++++++----------- 1 file changed, 51 insertions(+), 19 deletions(-) diff --git a/gtk/inspector/general.c b/gtk/inspector/general.c index 739cab7d29..499c1e65e7 100644 --- a/gtk/inspector/general.c +++ b/gtk/inspector/general.c @@ -675,15 +675,13 @@ init_media (GtkInspectorGeneral *gen) static void populate_seats (GtkInspectorGeneral *gen); static void -add_device (GtkInspectorGeneral *gen, - GdkDevice *device) +add_tool (GtkInspectorGeneral *gen, + GdkDeviceTool *tool) { - const char *name, *value; + GdkAxisFlags axes; + gchar *value; GString *str; int i; - guint n_touches; - char *text; - GdkAxisFlags axes; const char *axis_name[] = { "Ignore", "X", @@ -698,24 +696,26 @@ add_device (GtkInspectorGeneral *gen, "Rotation", "Slider" }; - const char *source_name[] = { - "Mouse", + const char *tool_type[] = { + "Unknown", "Pen", - "Cursor", - "Keyboard", - "Touchscreen", - "Touchpad", - "Trackpoint", - "Pad" + "Eraser", + "Brush", + "Pencil", + "Airbrush", + "Mouse", + "Lens", }; - name = gdk_device_get_name (device); - value = source_name[gdk_device_get_source (device)]; - add_label_row (gen, GTK_LIST_BOX (gen->device_box), name, value, 10); - str = g_string_new (""); + value = g_strdup_printf ("Serial %" G_GUINT64_FORMAT, gdk_device_tool_get_serial (tool)); + add_label_row (gen, GTK_LIST_BOX (gen->device_box), "Tool", value, 10); + g_free (value); - axes = gdk_device_get_axes (device); + add_label_row (gen, GTK_LIST_BOX (gen->device_box), "Type", + tool_type[gdk_device_tool_get_tool_type (tool)], 20); + + axes = gdk_device_tool_get_axes (tool); for (i = GDK_AXIS_X; i < GDK_AXIS_LAST; i++) { if ((axes & (1 << i)) != 0) @@ -730,6 +730,29 @@ add_device (GtkInspectorGeneral *gen, add_label_row (gen, GTK_LIST_BOX (gen->device_box), "Axes", str->str, 20); g_string_free (str, TRUE); +} + +static void +add_device (GtkInspectorGeneral *gen, + GdkDevice *device) +{ + const char *name, *value; + guint n_touches; + char *text; + const char *source_name[] = { + "Mouse", + "Pen", + "Cursor", + "Keyboard", + "Touchscreen", + "Touchpad", + "Trackpoint", + "Pad" + }; + + name = gdk_device_get_name (device); + value = source_name[gdk_device_get_source (device)]; + add_label_row (gen, GTK_LIST_BOX (gen->device_box), name, value, 10); g_object_get (device, "num-touches", &n_touches, NULL); if (n_touches > 0) @@ -786,6 +809,8 @@ add_seat (GtkInspectorGeneral *gen, g_object_set_data (G_OBJECT (seat), "inspector-connected", GINT_TO_POINTER (1)); g_signal_connect_swapped (seat, "device-added", G_CALLBACK (populate_seats), gen); g_signal_connect_swapped (seat, "device-removed", G_CALLBACK (populate_seats), gen); + g_signal_connect_swapped (seat, "tool-added", G_CALLBACK (populate_seats), gen); + g_signal_connect_swapped (seat, "tool-removed", G_CALLBACK (populate_seats), gen); } text = g_strdup_printf ("Seat %d", num); @@ -801,6 +826,13 @@ add_seat (GtkInspectorGeneral *gen, add_device (gen, GDK_DEVICE (l->data)); g_list_free (list); + + list = gdk_seat_get_tools (seat); + + for (l = list; l; l = l->next) + add_tool (gen, l->data); + + g_list_free (list); } static void From 230ce9bfde73eb84d75e48b32a7af18e8de9e588 Mon Sep 17 00:00:00 2001 From: Carlos Garnacho Date: Tue, 28 Jul 2020 17:10:45 +0200 Subject: [PATCH 09/13] gdk: Remove gdk_device_get_axes() Besides the implicit x/y assumptions, devices don't have axes. Those are actually provided by the GdkDeviceTool driving the device, and different tools may have different axes. It does not make sense to offer this API that can change beneath someone's feet, we now have gdk_device_tool_get_axes() which is static to the tool. --- docs/reference/gdk/gdk4-sections.txt | 1 - gdk/gdkdevice.c | 35 ---------------------------- gdk/gdkdevice.h | 3 --- gdk/gdkdeviceprivate.h | 1 - 4 files changed, 40 deletions(-) diff --git a/docs/reference/gdk/gdk4-sections.txt b/docs/reference/gdk/gdk4-sections.txt index a863bae857..54038d4806 100644 --- a/docs/reference/gdk/gdk4-sections.txt +++ b/docs/reference/gdk/gdk4-sections.txt @@ -362,7 +362,6 @@ gdk_device_get_device_type gdk_device_get_display gdk_device_get_has_cursor gdk_device_get_n_axes -gdk_device_get_axes gdk_device_get_seat gdk_device_get_num_touches gdk_device_get_device_tool diff --git a/gdk/gdkdevice.c b/gdk/gdkdevice.c index 3a57c64860..bdb2799c05 100644 --- a/gdk/gdkdevice.c +++ b/gdk/gdkdevice.c @@ -95,7 +95,6 @@ enum { PROP_PRODUCT_ID, PROP_SEAT, PROP_NUM_TOUCHES, - PROP_AXES, PROP_TOOL, PROP_DIRECTION, PROP_HAS_BIDI_LAYOUTS, @@ -265,17 +264,6 @@ gdk_device_class_init (GdkDeviceClass *klass) 0, G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS); - /** - * GdkDevice:axes: - * - * The axes currently available for this device. - */ - device_props[PROP_AXES] = - g_param_spec_flags ("axes", - P_("Axes"), - P_("Axes"), - GDK_TYPE_AXIS_FLAGS, 0, - G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); device_props[PROP_TOOL] = g_param_spec_object ("tool", @@ -502,9 +490,6 @@ gdk_device_get_property (GObject *object, case PROP_NUM_TOUCHES: g_value_set_uint (value, device->num_touches); break; - case PROP_AXES: - g_value_set_flags (value, device->axis_flags); - break; case PROP_TOOL: g_value_set_object (value, device->last_tool); break; @@ -954,10 +939,7 @@ _gdk_device_reset_axes (GdkDevice *device) for (i = device->axes->len - 1; i >= 0; i--) g_array_remove_index (device->axes, i); - device->axis_flags = 0; - g_object_notify_by_pspec (G_OBJECT (device), device_props[PROP_N_AXES]); - g_object_notify_by_pspec (G_OBJECT (device), device_props[PROP_AXES]); } guint @@ -996,10 +978,7 @@ _gdk_device_add_axis (GdkDevice *device, device->axes = g_array_append_val (device->axes, axis_info); pos = device->axes->len - 1; - device->axis_flags |= (1 << use); - g_object_notify_by_pspec (G_OBJECT (device), device_props[PROP_N_AXES]); - g_object_notify_by_pspec (G_OBJECT (device), device_props[PROP_AXES]); return pos; } @@ -1343,20 +1322,6 @@ gdk_device_get_seat (GdkDevice *device) return device->seat; } -/** - * gdk_device_get_axes: - * @device: a #GdkDevice - * - * Returns the axes currently available on the device. - **/ -GdkAxisFlags -gdk_device_get_axes (GdkDevice *device) -{ - g_return_val_if_fail (GDK_IS_DEVICE (device), 0); - - return device->axis_flags; -} - void gdk_device_update_tool (GdkDevice *device, GdkDeviceTool *tool) diff --git a/gdk/gdkdevice.h b/gdk/gdkdevice.h index 5a369352b4..0b2482ef74 100644 --- a/gdk/gdkdevice.h +++ b/gdk/gdkdevice.h @@ -142,9 +142,6 @@ const char *gdk_device_get_product_id (GdkDevice *device); GDK_AVAILABLE_IN_ALL GdkSeat *gdk_device_get_seat (GdkDevice *device); -GDK_AVAILABLE_IN_ALL -GdkAxisFlags gdk_device_get_axes (GdkDevice *device); - GDK_AVAILABLE_IN_ALL guint gdk_device_get_num_touches (GdkDevice *device); diff --git a/gdk/gdkdeviceprivate.h b/gdk/gdkdeviceprivate.h index 93c7b7a558..04263b2416 100644 --- a/gdk/gdkdeviceprivate.h +++ b/gdk/gdkdeviceprivate.h @@ -39,7 +39,6 @@ struct _GdkDevice char *name; GdkInputSource source; gboolean has_cursor; - GdkAxisFlags axis_flags; GdkDeviceType type; GdkDisplay *display; /* The paired logical device for logical devices, From 7629f6d5333d823b51924682c24cef90eb124d91 Mon Sep 17 00:00:00 2001 From: Carlos Garnacho Date: Tue, 28 Jul 2020 16:21:47 +0200 Subject: [PATCH 10/13] gdk: Make GdkDevice axis API internal All outside interaction happens through gdk_event_get_axis(), no device poking is necessary, nor axis to array index translations. --- docs/reference/gdk/gdk4-sections.txt | 3 --- gdk/gdkdevice.h | 12 ------------ gdk/gdkinternals.h | 8 +++++++- 3 files changed, 7 insertions(+), 16 deletions(-) diff --git a/docs/reference/gdk/gdk4-sections.txt b/docs/reference/gdk/gdk4-sections.txt index 54038d4806..296a517706 100644 --- a/docs/reference/gdk/gdk4-sections.txt +++ b/docs/reference/gdk/gdk4-sections.txt @@ -355,13 +355,11 @@ gdk_device_get_name gdk_device_get_vendor_id gdk_device_get_product_id gdk_device_get_source -gdk_device_get_axis_use gdk_device_get_associated_device gdk_device_list_physical_devices gdk_device_get_device_type gdk_device_get_display gdk_device_get_has_cursor -gdk_device_get_n_axes gdk_device_get_seat gdk_device_get_num_touches gdk_device_get_device_tool @@ -375,7 +373,6 @@ gdk_device_has_bidi_layouts gdk_device_get_surface_at_position GdkTimeCoord -gdk_device_get_axis gdk_device_tool_get_serial diff --git a/gdk/gdkdevice.h b/gdk/gdkdevice.h index 0b2482ef74..644451a0bf 100644 --- a/gdk/gdkdevice.h +++ b/gdk/gdkdevice.h @@ -106,24 +106,12 @@ gboolean gdk_device_get_has_cursor (GdkDevice *device); GDK_AVAILABLE_IN_ALL GdkInputSource gdk_device_get_source (GdkDevice *device); -GDK_AVAILABLE_IN_ALL -GdkAxisUse gdk_device_get_axis_use (GdkDevice *device, - guint index_); - - GDK_AVAILABLE_IN_ALL GdkSurface * gdk_device_get_surface_at_position (GdkDevice *device, double *win_x, double *win_y); GDK_AVAILABLE_IN_ALL -int gdk_device_get_n_axes (GdkDevice *device); -GDK_AVAILABLE_IN_ALL -gboolean gdk_device_get_axis (GdkDevice *device, - double *axes, - GdkAxisUse use, - double *value); -GDK_AVAILABLE_IN_ALL GdkDisplay * gdk_device_get_display (GdkDevice *device); GDK_AVAILABLE_IN_ALL diff --git a/gdk/gdkinternals.h b/gdk/gdkinternals.h index 0a70e407d1..b21c74a55d 100644 --- a/gdk/gdkinternals.h +++ b/gdk/gdkinternals.h @@ -268,7 +268,13 @@ void gdk_device_ungrab (GdkDevice *device, void gdk_device_get_position (GdkDevice *device, double *x, double *y); - +int gdk_device_get_n_axes (GdkDevice *device); +gboolean gdk_device_get_axis (GdkDevice *device, + double *axes, + GdkAxisUse use, + double *value); +GdkAxisUse gdk_device_get_axis_use (GdkDevice *device, + guint index_); void gdk_surface_get_root_coords (GdkSurface *surface, int x, From 4a2bbed157c6036bf8d7c644d86df74d54fe2dc6 Mon Sep 17 00:00:00 2001 From: Carlos Garnacho Date: Tue, 28 Jul 2020 19:38:24 +0200 Subject: [PATCH 11/13] gdk: Make events hold an axis array matching GdkAxisUse Instead of doing device-specific translations of array positions, use GdkAxisUse as an array index right away. --- gdk/gdkevents.c | 31 ++++++++++++++---------------- gdk/wayland/gdkdevice-wayland.c | 25 ++++++++---------------- gdk/win32/gdkdevice-wintab.c | 8 ++++---- gdk/win32/gdkdevicemanager-win32.c | 4 ++-- gdk/x11/gdkdevicemanager-xi2.c | 13 +++++-------- 5 files changed, 33 insertions(+), 48 deletions(-) diff --git a/gdk/gdkevents.c b/gdk/gdkevents.c index 8131d54d59..8e308c560c 100644 --- a/gdk/gdkevents.c +++ b/gdk/gdkevents.c @@ -732,25 +732,24 @@ gdk_motion_event_push_history (GdkEvent *event, GdkEvent *history_event) { GdkMotionEvent *self = (GdkMotionEvent *) event; + GdkDeviceTool *tool; GdkTimeCoord hist; - GdkDevice *device; - int i, n_axes; + int i; g_assert (GDK_IS_EVENT_TYPE (event, GDK_MOTION_NOTIFY)); g_assert (GDK_IS_EVENT_TYPE (history_event, GDK_MOTION_NOTIFY)); - device = gdk_event_get_device (history_event); - n_axes = gdk_device_get_n_axes (device); + if (!self->tool) + return; + + tool = gdk_event_get_device_tool (history_event); memset (&hist, 0, sizeof (GdkTimeCoord)); hist.time = gdk_event_get_time (history_event); - hist.flags = gdk_device_get_axes (device); + hist.flags = gdk_device_tool_get_axes (tool); - for (i = 0; i < n_axes; i++) - { - GdkAxisUse use = gdk_device_get_axis_use (device, i); - gdk_event_get_axis (history_event, use, &hist.axes[use]); - } + for (i = GDK_AXIS_X; i < GDK_AXIS_LAST; i++) + gdk_event_get_axis (history_event, i, &hist.axes[i]); if (G_UNLIKELY (!self->history)) self->history = g_array_new (FALSE, TRUE, sizeof (GdkTimeCoord)); @@ -952,10 +951,8 @@ gdk_event_get_axis (GdkEvent *event, if (!gdk_event_get_axes (event, &axes, &n_axes)) return FALSE; - if (axis_use >= gdk_device_get_n_axes (event->device)) - return FALSE; - - return gdk_device_get_axis (event->device, axes, axis_use, value); + *value = axes[axis_use]; + return TRUE; } /** @@ -1408,7 +1405,7 @@ gdk_button_event_get_axes (GdkEvent *event, return FALSE; *axes = self->axes; - *n_axes = gdk_device_get_n_axes (source_device); + *n_axes = GDK_AXIS_LAST; return TRUE; } @@ -1985,7 +1982,7 @@ gdk_touch_event_get_axes (GdkEvent *event, return FALSE; *axes = self->axes; - *n_axes = gdk_device_get_n_axes (source_device); + *n_axes = GDK_AXIS_LAST; return TRUE; } @@ -2865,7 +2862,7 @@ gdk_motion_event_get_axes (GdkEvent *event, return FALSE; *axes = self->axes; - *n_axes = gdk_device_get_n_axes (source_device); + *n_axes = GDK_AXIS_LAST; return TRUE; } diff --git a/gdk/wayland/gdkdevice-wayland.c b/gdk/wayland/gdkdevice-wayland.c index d9a9a95672..0b1804648e 100644 --- a/gdk/wayland/gdkdevice-wayland.c +++ b/gdk/wayland/gdkdevice-wayland.c @@ -186,7 +186,7 @@ struct _GdkWaylandTabletData GdkWaylandTabletToolData *current_tool; int axis_indices[GDK_AXIS_LAST]; - double *axes; + double axes[GDK_AXIS_LAST]; }; struct _GdkWaylandSeat @@ -2755,9 +2755,6 @@ _gdk_wayland_seat_remove_tablet (GdkWaylandSeat *seat, if (tablet->pointer_info.focus) g_object_unref (tablet->pointer_info.focus); - if (tablet->axes) - g_free (tablet->axes); - wl_surface_destroy (tablet->pointer_info.pointer_surface); g_object_unref (tablet->logical_device); g_object_unref (tablet->stylus_device); @@ -3371,12 +3368,6 @@ gdk_wayland_device_tablet_clone_tool_axes (GdkWaylandTabletData *tablet, tablet->axis_indices[GDK_AXIS_SLIDER] = axis_pos; } - if (tablet->axes) - g_free (tablet->axes); - - tablet->axes = - g_new0 (double, gdk_device_get_n_axes (tablet->stylus_device)); - g_object_thaw_notify (G_OBJECT (tablet->stylus_device)); } @@ -3492,7 +3483,7 @@ static double * tablet_copy_axes (GdkWaylandTabletData *tablet) { return g_memdup (tablet->axes, - sizeof (double) * gdk_device_get_n_axes (tablet->stylus_device)); + sizeof (double) * GDK_AXIS_LAST); } static void @@ -3592,7 +3583,7 @@ tablet_tool_handle_pressure (void *data, int axis_index = tablet->axis_indices[GDK_AXIS_PRESSURE]; _gdk_device_translate_axis (tablet->stylus_device, axis_index, - pressure, &tablet->axes[axis_index]); + pressure, &tablet->axes[GDK_AXIS_PRESSURE]); GDK_SEAT_NOTE (tool->seat, EVENTS, g_message ("tablet tool %d pressure %d", @@ -3609,7 +3600,7 @@ tablet_tool_handle_distance (void *data, int axis_index = tablet->axis_indices[GDK_AXIS_DISTANCE]; _gdk_device_translate_axis (tablet->stylus_device, axis_index, - distance, &tablet->axes[axis_index]); + distance, &tablet->axes[GDK_AXIS_DISTANCE]); GDK_SEAT_NOTE (tool->seat, EVENTS, g_message ("tablet tool %d distance %d", @@ -3629,10 +3620,10 @@ tablet_tool_handle_tilt (void *data, _gdk_device_translate_axis (tablet->stylus_device, xtilt_axis_index, wl_fixed_to_double (xtilt), - &tablet->axes[xtilt_axis_index]); + &tablet->axes[GDK_AXIS_XTILT]); _gdk_device_translate_axis (tablet->stylus_device, ytilt_axis_index, wl_fixed_to_double (ytilt), - &tablet->axes[ytilt_axis_index]); + &tablet->axes[GDK_AXIS_YTILT]); GDK_SEAT_NOTE (tool->seat, EVENTS, g_message ("tablet tool %d tilt %f/%f", @@ -3687,7 +3678,7 @@ tablet_tool_handle_rotation (void *data, _gdk_device_translate_axis (tablet->stylus_device, axis_index, wl_fixed_to_double (degrees), - &tablet->axes[axis_index]); + &tablet->axes[GDK_AXIS_ROTATION]); GDK_SEAT_NOTE (tool->seat, EVENTS, g_message ("tablet tool %d rotation %f", @@ -3705,7 +3696,7 @@ tablet_tool_handle_slider (void *data, int axis_index = tablet->axis_indices[GDK_AXIS_SLIDER]; _gdk_device_translate_axis (tablet->stylus_device, axis_index, - position, &tablet->axes[axis_index]); + position, &tablet->axes[GDK_AXIS_SLIDER]); GDK_SEAT_NOTE (tool->seat, EVENTS, g_message ("tablet tool %d slider %d", diff --git a/gdk/win32/gdkdevice-wintab.c b/gdk/win32/gdkdevice-wintab.c index efec9dbc74..50fc2c2e87 100644 --- a/gdk/win32/gdkdevice-wintab.c +++ b/gdk/win32/gdkdevice-wintab.c @@ -201,18 +201,18 @@ _gdk_device_wintab_translate_axes (GdkDeviceWintab *device_wintab, minfo.rcWork.bottom - minfo.rcWork.top, i, device_wintab->last_axis_data[i], - &axes[i]); + &axes[use]); } if (use == GDK_AXIS_X) - temp_x = axes[i]; + temp_x = axes[use]; else if (use == GDK_AXIS_Y) - temp_y = axes[i]; + temp_y = axes[use]; break; default: _gdk_device_translate_axis (device, i, device_wintab->last_axis_data[i], - &axes[i]); + &axes[use]); break; } } diff --git a/gdk/win32/gdkdevicemanager-win32.c b/gdk/win32/gdkdevicemanager-win32.c index fcdf5b13da..80f6676a85 100644 --- a/gdk/win32/gdkdevicemanager-win32.c +++ b/gdk/win32/gdkdevicemanager-win32.c @@ -1044,7 +1044,7 @@ gdk_input_other_event (GdkDisplay *display, if (event_type == GDK_BUTTON_PRESS || event_type == GDK_BUTTON_RELEASE) { - axes = g_new (double, num_axes); + axes = g_new (double, GDK_AXIS_LAST); _gdk_device_wintab_translate_axes (source_device, window, @@ -1080,7 +1080,7 @@ gdk_input_other_event (GdkDisplay *display, } else { - axes = g_new (double, num_axes); + axes = g_new (double, GDK_AXIS_LAST); _gdk_device_wintab_translate_axes (source_device, window, axes, diff --git a/gdk/x11/gdkdevicemanager-xi2.c b/gdk/x11/gdkdevicemanager-xi2.c index 69b6cbde76..c26ef984b6 100644 --- a/gdk/x11/gdkdevicemanager-xi2.c +++ b/gdk/x11/gdkdevicemanager-xi2.c @@ -1197,7 +1197,7 @@ translate_axes (GdkDevice *device, double *vals; n_axes = gdk_device_get_n_axes (device); - axes = g_new0 (double, n_axes); + axes = g_new0 (double, GDK_AXIS_LAST); vals = valuators->values; for (i = 0; i < MIN (valuators->mask_len * 8, n_axes); i++) @@ -1206,10 +1206,7 @@ translate_axes (GdkDevice *device, double val; if (!XIMaskIsSet (valuators->mask, i)) - { - axes[i] = gdk_x11_device_xi2_get_last_axis_value (GDK_X11_DEVICE_XI2 (device), i); - continue; - } + continue; use = gdk_device_get_axis_use (device, i); val = *vals++; @@ -1220,13 +1217,13 @@ translate_axes (GdkDevice *device, case GDK_AXIS_Y: { if (use == GDK_AXIS_X) - axes[i] = x; + axes[use] = x; else - axes[i] = y; + axes[use] = y; } break; default: - _gdk_device_translate_axis (device, i, val, &axes[i]); + _gdk_device_translate_axis (device, i, val, &axes[use]); break; } } From 25ea17a6fc0035b5f7e190ed84107c0f8016aa09 Mon Sep 17 00:00:00 2001 From: Carlos Garnacho Date: Tue, 28 Jul 2020 23:00:02 +0200 Subject: [PATCH 12/13] gdk: Drop source_device argument from _gdk_display_device_grab_update() It's just passed around and used nowhere. --- gdk/broadway/gdkeventsource.c | 1 - gdk/gdkdisplay.c | 6 ++---- gdk/gdkdisplayprivate.h | 1 - gdk/gdksurface.c | 7 +++---- gdk/macos/gdkmacosdevice.c | 2 +- gdk/wayland/gdkdevice-wayland.c | 1 - gdk/win32/gdkdevice-virtual.c | 2 +- gdk/x11/gdkdisplay-x11.c | 8 +------- 8 files changed, 8 insertions(+), 20 deletions(-) diff --git a/gdk/broadway/gdkeventsource.c b/gdk/broadway/gdkeventsource.c index ae3b38fab5..6fbea57123 100644 --- a/gdk/broadway/gdkeventsource.c +++ b/gdk/broadway/gdkeventsource.c @@ -280,7 +280,6 @@ _gdk_broadway_events_got_input (GdkDisplay *display, case BROADWAY_EVENT_UNGRAB_NOTIFY: _gdk_display_device_grab_update (display, display_broadway->core_pointer, - display_broadway->pointer, message->base.serial); break; diff --git a/gdk/gdkdisplay.c b/gdk/gdkdisplay.c index 92f1de8a18..cc9306eafd 100644 --- a/gdk/gdkdisplay.c +++ b/gdk/gdkdisplay.c @@ -603,7 +603,6 @@ get_current_toplevel (GdkDisplay *display, static void switch_to_pointer_grab (GdkDisplay *display, GdkDevice *device, - GdkDevice *source_device, GdkDeviceGrabInfo *grab, GdkDeviceGrabInfo *last_grab, guint32 time, @@ -680,7 +679,6 @@ _gdk_display_update_last_event (GdkDisplay *display, void _gdk_display_device_grab_update (GdkDisplay *display, GdkDevice *device, - GdkDevice *source_device, gulong current_serial) { GdkDeviceGrabInfo *current_grab, *next_grab; @@ -705,7 +703,7 @@ _gdk_display_device_grab_update (GdkDisplay *display, if (!current_grab->activated) { if (gdk_device_get_source (device) != GDK_SOURCE_KEYBOARD) - switch_to_pointer_grab (display, device, source_device, current_grab, NULL, time, current_serial); + switch_to_pointer_grab (display, device, current_grab, NULL, time, current_serial); } break; @@ -733,7 +731,7 @@ _gdk_display_device_grab_update (GdkDisplay *display, g_hash_table_insert (display->device_grabs, device, grabs); if (gdk_device_get_source (device) != GDK_SOURCE_KEYBOARD) - switch_to_pointer_grab (display, device, source_device, + switch_to_pointer_grab (display, device, next_grab, current_grab, time, current_serial); diff --git a/gdk/gdkdisplayprivate.h b/gdk/gdkdisplayprivate.h index 13decb82be..7bdc5fc6ba 100644 --- a/gdk/gdkdisplayprivate.h +++ b/gdk/gdkdisplayprivate.h @@ -179,7 +179,6 @@ void _gdk_display_update_last_event (GdkDisplay *display, GdkEvent *event); void _gdk_display_device_grab_update (GdkDisplay *display, GdkDevice *device, - GdkDevice *source_device, gulong current_serial); GdkDeviceGrabInfo * _gdk_display_get_last_device_grab (GdkDisplay *display, GdkDevice *device); diff --git a/gdk/gdksurface.c b/gdk/gdksurface.c index 6b58c1f027..9edb3597b9 100644 --- a/gdk/gdksurface.c +++ b/gdk/gdksurface.c @@ -2244,7 +2244,7 @@ _gdk_windowing_got_event (GdkDisplay *display, source_device = pointer_info->last_physical_device; } - _gdk_display_device_grab_update (display, device, source_device, serial); + _gdk_display_device_grab_update (display, device, serial); } event_surface = gdk_event_get_surface (event); @@ -2272,8 +2272,7 @@ _gdk_windowing_got_event (GdkDisplay *display, serial, gdk_event_get_time (event), TRUE); - _gdk_display_device_grab_update (display, device, - source_device, serial); + _gdk_display_device_grab_update (display, device, serial); } } else if (type == GDK_BUTTON_RELEASE || @@ -2292,7 +2291,7 @@ _gdk_windowing_got_event (GdkDisplay *display, { button_release_grab->serial_end = serial; button_release_grab->implicit_ungrab = FALSE; - _gdk_display_device_grab_update (display, device, source_device, serial); + _gdk_display_device_grab_update (display, device, serial); } } } diff --git a/gdk/macos/gdkmacosdevice.c b/gdk/macos/gdkmacosdevice.c index 93a909c4c2..94ecbd4041 100644 --- a/gdk/macos/gdkmacosdevice.c +++ b/gdk/macos/gdkmacosdevice.c @@ -123,7 +123,7 @@ gdk_macos_device_ungrab (GdkDevice *device, if (grab != NULL) grab->serial_end = 0; - _gdk_display_device_grab_update (display, device, device, 0); + _gdk_display_device_grab_update (display, device, 0); } static void diff --git a/gdk/wayland/gdkdevice-wayland.c b/gdk/wayland/gdkdevice-wayland.c index 0b1804648e..b6aa066773 100644 --- a/gdk/wayland/gdkdevice-wayland.c +++ b/gdk/wayland/gdkdevice-wayland.c @@ -1515,7 +1515,6 @@ pointer_handle_leave (void *data, display_serial, NULL, TRUE); _gdk_display_device_grab_update (seat->display, seat->logical_pointer, - seat->pointer, display_serial); } diff --git a/gdk/win32/gdkdevice-virtual.c b/gdk/win32/gdkdevice-virtual.c index d5f6b91644..cff071de1b 100644 --- a/gdk/win32/gdkdevice-virtual.c +++ b/gdk/win32/gdkdevice-virtual.c @@ -151,7 +151,7 @@ gdk_device_virtual_ungrab (GdkDevice *device, ReleaseCapture (); } - _gdk_display_device_grab_update (display, device, device, 0); + _gdk_display_device_grab_update (display, device, 0); } static void diff --git a/gdk/x11/gdkdisplay-x11.c b/gdk/x11/gdkdisplay-x11.c index 8be698fa6e..1c30c89e40 100644 --- a/gdk/x11/gdkdisplay-x11.c +++ b/gdk/x11/gdkdisplay-x11.c @@ -1760,15 +1760,9 @@ device_grab_update_callback (GdkDisplay *display, gpointer data, gulong serial) { - GdkPointerSurfaceInfo *pointer_info; GdkDevice *device = data; - pointer_info = _gdk_display_get_pointer_info (display, device); - _gdk_display_device_grab_update (display, device, - pointer_info->last_physical_device != NULL - ? pointer_info->last_physical_device - : device, - serial); + _gdk_display_device_grab_update (display, device, serial); } #define XSERVER_TIME_IS_LATER(time1, time2) \ From cab1dcb6960d1efb4dee916a1c804c908664c530 Mon Sep 17 00:00:00 2001 From: Carlos Garnacho Date: Wed, 29 Jul 2020 00:03:48 +0200 Subject: [PATCH 13/13] gdk: Conflate GDK devices Make GdkEvents hold a single GdkDevice. This device is closer to the logical device conceptually, although it must be sufficient for device checks (i.e. GdkInputSource), which makes it similar to the physical devices. Make the logical devices have a more accurate GdkInputSource where needed, and conflate the event devices altogether. --- docs/reference/gdk/gdk4-sections.txt | 1 - gdk/broadway/gdkeventsource.c | 9 --- gdk/gdkdisplay.c | 1 - gdk/gdkevents.c | 102 ++++++--------------------- gdk/gdkevents.h | 3 - gdk/gdkeventsprivate.h | 18 ----- gdk/gdksurface.c | 10 +-- gdk/wayland/gdkdevice-wayland.c | 49 +++---------- gdk/win32/gdkdevicemanager-win32.c | 2 - gdk/win32/gdkevents-win32.c | 25 +------ gdk/x11/gdkdevicemanager-xi2.c | 10 +-- gdk/x11/gdkeventsource.c | 2 - gtk/gtkeventcontrollerscroll.c | 2 +- gtk/gtkflowbox.c | 2 +- gtk/gtkgesture.c | 2 +- gtk/gtkgestureclick.c | 2 +- gtk/gtkgesturesingle.c | 2 +- gtk/gtkimcontext.c | 1 - gtk/gtkimcontextsimple.c | 1 - gtk/gtklistbox.c | 2 +- gtk/gtkmain.c | 17 +++-- gtk/gtkpadcontroller.c | 4 +- gtk/gtkpaned.c | 2 +- gtk/gtkrange.c | 2 +- gtk/gtkscrolledwindow.c | 2 +- gtk/gtktext.c | 4 +- gtk/gtktextview.c | 6 +- gtk/gtktooltip.c | 2 +- gtk/gtkwidget.c | 3 - testsuite/gtk/shortcuts.c | 1 - 30 files changed, 65 insertions(+), 224 deletions(-) diff --git a/docs/reference/gdk/gdk4-sections.txt b/docs/reference/gdk/gdk4-sections.txt index 296a517706..d6d5d19eb6 100644 --- a/docs/reference/gdk/gdk4-sections.txt +++ b/docs/reference/gdk/gdk4-sections.txt @@ -475,7 +475,6 @@ gdk_event_unref gdk_event_get_event_type gdk_event_get_surface gdk_event_get_device -gdk_event_get_source_device gdk_event_get_device_tool gdk_event_get_time gdk_event_get_display diff --git a/gdk/broadway/gdkeventsource.c b/gdk/broadway/gdkeventsource.c index 6fbea57123..4eef497cb4 100644 --- a/gdk/broadway/gdkeventsource.c +++ b/gdk/broadway/gdkeventsource.c @@ -100,7 +100,6 @@ _gdk_broadway_events_got_input (GdkDisplay *display, event = gdk_crossing_event_new (GDK_ENTER_NOTIFY, surface, display_broadway->core_pointer, - display_broadway->pointer, message->base.time, message->pointer.state, message->pointer.win_x, @@ -119,7 +118,6 @@ _gdk_broadway_events_got_input (GdkDisplay *display, event = gdk_crossing_event_new (GDK_LEAVE_NOTIFY, surface, display_broadway->core_pointer, - display_broadway->pointer, message->base.time, message->pointer.state, message->pointer.win_x, @@ -140,7 +138,6 @@ _gdk_broadway_events_got_input (GdkDisplay *display, { event = gdk_motion_event_new (surface, display_broadway->core_pointer, - display_broadway->pointer, NULL, message->base.time, message->pointer.state, @@ -167,7 +164,6 @@ _gdk_broadway_events_got_input (GdkDisplay *display, : GDK_BUTTON_RELEASE, surface, display_broadway->core_pointer, - display_broadway->pointer, NULL, message->base.time, message->pointer.state, @@ -187,7 +183,6 @@ _gdk_broadway_events_got_input (GdkDisplay *display, { event = gdk_scroll_event_new_discrete (surface, display_broadway->core_pointer, - display_broadway->pointer, NULL, message->base.time, 0, @@ -234,7 +229,6 @@ _gdk_broadway_events_got_input (GdkDisplay *display, GUINT_TO_POINTER (message->touch.sequence_id), surface, display_broadway->core_pointer, - display_broadway->touchscreen, message->base.time, state, message->touch.win_x, @@ -263,7 +257,6 @@ _gdk_broadway_events_got_input (GdkDisplay *display, : GDK_KEY_RELEASE, surface, display_broadway->core_keyboard, - display_broadway->keyboard, message->base.time, message->key.key, message->key.state, @@ -320,7 +313,6 @@ _gdk_broadway_events_got_input (GdkDisplay *display, { event = gdk_focus_event_new (surface, display_broadway->core_keyboard, - display_broadway->keyboard, FALSE); node = _gdk_event_queue_append (display, event); @@ -331,7 +323,6 @@ _gdk_broadway_events_got_input (GdkDisplay *display, { event = gdk_focus_event_new (surface, display_broadway->core_keyboard, - display_broadway->keyboard, TRUE); node = _gdk_event_queue_append (display, event); diff --git a/gdk/gdkdisplay.c b/gdk/gdkdisplay.c index cc9306eafd..12a7edc159 100644 --- a/gdk/gdkdisplay.c +++ b/gdk/gdkdisplay.c @@ -491,7 +491,6 @@ generate_grab_broken_event (GdkDisplay *display, GdkEvent *event; event = gdk_grab_broken_event_new (surface, - device, device, grab_surface, implicit); diff --git a/gdk/gdkevents.c b/gdk/gdkevents.c index 8e308c560c..147c47e11b 100644 --- a/gdk/gdkevents.c +++ b/gdk/gdkevents.c @@ -153,7 +153,6 @@ gdk_event_finalize (GdkEvent *self) g_clear_object (&self->surface); g_clear_object (&self->device); - g_clear_object (&self->source_device); g_type_free_instance ((GTypeInstance *) self); } @@ -398,7 +397,6 @@ type_name ## _get_type (void) \ * @event_type: the #GdkEventType to allocate * @surface: (nullable): the #GdkSurface of the event * @device: (nullable): the #GdkDevice of the event - * @source_device: (nullable): the source #GdkDevice of the event * @time_: the event serial * * Allocates a #GdkEvent for the given @event_type, and sets its @@ -410,7 +408,6 @@ static gpointer gdk_event_alloc (GdkEventType event_type, GdkSurface *surface, GdkDevice *device, - GdkDevice *source_device, guint32 time_) { g_assert (event_type >= GDK_DELETE && event_type < GDK_EVENT_LAST); @@ -428,7 +425,6 @@ gdk_event_alloc (GdkEventType event_type, event->event_type = event_type; event->surface = surface != NULL ? g_object_ref (surface) : NULL; event->device = device != NULL ? g_object_ref (device) : NULL; - event->source_device = source_device != NULL ? g_object_ref (source_device) : NULL; event->time = time_; return event; @@ -487,15 +483,6 @@ check_event_sanity (GdkEvent *event) return FALSE; } - if (event->source_device != NULL && - gdk_surface_get_display (event->surface) != gdk_device_get_display (event->source_device)) - { - char *type = g_enum_to_string (GDK_TYPE_EVENT_TYPE, event->event_type); - g_warning ("Event of type %s with mismatched source device display", type); - g_free (type); - return FALSE; - } - return TRUE; } #endif @@ -704,7 +691,6 @@ gdk_event_queue_handle_scroll_compression (GdkDisplay *display) gdk_scroll_event_get_deltas (old_event, &dx, &dy); event = gdk_scroll_event_new (surface, device, - gdk_event_get_source_device (old_event), gdk_event_get_device_tool (old_event), gdk_event_get_time (old_event), gdk_event_get_modifier_state (old_event), @@ -1214,33 +1200,6 @@ gdk_event_get_device (GdkEvent *event) return event->device; } -/** - * gdk_event_get_source_device: - * @event: a #GdkEvent - * - * This function returns the physical #GdkDevice that has triggered - * the event, falling back to the logical device, as returned by - * gdk_event_get_device(), if the event wasn’t caused by - * interaction with a hardware device. This may happen for example - * in synthesized crossing events after a #GdkSurface updates its - * geometry or a grab is acquired/released. - * - * If the event does not contain a device field, this function will - * return %NULL. - * - * Returns: (nullable) (transfer none): a #GdkDevice, or %NULL. - **/ -GdkDevice * -gdk_event_get_source_device (GdkEvent *event) -{ - g_return_val_if_fail (GDK_IS_EVENT (event), NULL); - - if (event->source_device) - return event->source_device; - - return event->device; -} - /** * gdk_event_get_device_tool: * @event: a #GdkEvent @@ -1399,7 +1358,7 @@ gdk_button_event_get_axes (GdkEvent *event, guint *n_axes) { GdkButtonEvent *self = (GdkButtonEvent *) event; - GdkDevice *source_device = gdk_event_get_source_device (event); + GdkDevice *source_device = gdk_event_get_device (event); if (source_device == NULL) return FALSE; @@ -1430,7 +1389,6 @@ GdkEvent * gdk_button_event_new (GdkEventType type, GdkSurface *surface, GdkDevice *device, - GdkDevice *source_device, GdkDeviceTool *tool, guint32 time, GdkModifierType state, @@ -1442,7 +1400,7 @@ gdk_button_event_new (GdkEventType type, g_return_val_if_fail (type == GDK_BUTTON_PRESS || type == GDK_BUTTON_RELEASE, NULL); - GdkButtonEvent *self = gdk_event_alloc (type, surface, device, source_device, time); + GdkButtonEvent *self = gdk_event_alloc (type, surface, device, time); self->tool = tool != NULL ? g_object_ref (tool) : NULL; self->axes = axes; @@ -1507,7 +1465,6 @@ GDK_DEFINE_EVENT_TYPE (GdkKeyEvent, gdk_key_event, * @type: the event type, either %GDK_KEY_PRESS or %GDK_KEY_RELEASE * @surface: the #GdkSurface of the event * @device: the #GdkDevice related to the event - * @source_device: the source #GdkDevice related to the event * @time: the event's timestamp * @keycode: the keycode of the event * @state: the modifiers state @@ -1523,7 +1480,6 @@ GdkEvent * gdk_key_event_new (GdkEventType type, GdkSurface *surface, GdkDevice *device, - GdkDevice *source_device, guint32 time, guint keycode, GdkModifierType state, @@ -1534,7 +1490,7 @@ gdk_key_event_new (GdkEventType type, g_return_val_if_fail (type == GDK_KEY_PRESS || type == GDK_KEY_RELEASE, NULL); - GdkKeyEvent *self = gdk_event_alloc (type, surface, device, source_device, time); + GdkKeyEvent *self = gdk_event_alloc (type, surface, device, time); GdkEvent *event = (GdkEvent *) self; self->keycode = keycode; @@ -1898,7 +1854,7 @@ gdk_configure_event_new (GdkSurface *surface, g_return_val_if_fail (width >= 0 && height >= 0, NULL); - self = gdk_event_alloc (GDK_CONFIGURE, surface, NULL, NULL, GDK_CURRENT_TIME); + self = gdk_event_alloc (GDK_CONFIGURE, surface, NULL, GDK_CURRENT_TIME); self->width = width; self->height = height; @@ -1976,7 +1932,7 @@ gdk_touch_event_get_axes (GdkEvent *event, guint *n_axes) { GdkTouchEvent *self = (GdkTouchEvent *) event; - GdkDevice *source_device = gdk_event_get_source_device (event); + GdkDevice *source_device = gdk_event_get_device (event); if (source_device == NULL) return FALSE; @@ -2010,7 +1966,6 @@ gdk_touch_event_new (GdkEventType type, GdkEventSequence *sequence, GdkSurface *surface, GdkDevice *device, - GdkDevice *source_device, guint32 time, GdkModifierType state, double x, @@ -2025,7 +1980,7 @@ gdk_touch_event_new (GdkEventType type, type == GDK_TOUCH_UPDATE || type == GDK_TOUCH_CANCEL, NULL); - self = gdk_event_alloc (type, surface, device, source_device, time); + self = gdk_event_alloc (type, surface, device, time); self->sequence = sequence; self->state = state; self->x = x; @@ -2114,7 +2069,6 @@ GdkEvent * gdk_crossing_event_new (GdkEventType type, GdkSurface *surface, GdkDevice *device, - GdkDevice *source_device, guint32 time, GdkModifierType state, double x, @@ -2127,7 +2081,7 @@ gdk_crossing_event_new (GdkEventType type, g_return_val_if_fail (type == GDK_ENTER_NOTIFY || type == GDK_LEAVE_NOTIFY, NULL); - self = gdk_event_alloc (type, surface, device, source_device, time); + self = gdk_event_alloc (type, surface, device, time); self->state = state; self->x = x; @@ -2220,7 +2174,7 @@ GDK_DEFINE_EVENT_TYPE (GdkDeleteEvent, gdk_delete_event, GdkEvent * gdk_delete_event_new (GdkSurface *surface) { - return gdk_event_alloc (GDK_DELETE, surface, NULL, NULL, GDK_CURRENT_TIME); + return gdk_event_alloc (GDK_DELETE, surface, NULL, GDK_CURRENT_TIME); } /* }}} */ @@ -2245,10 +2199,9 @@ GDK_DEFINE_EVENT_TYPE (GdkFocusEvent, gdk_focus_event, GdkEvent * gdk_focus_event_new (GdkSurface *surface, GdkDevice *device, - GdkDevice *source_device, gboolean focus_in) { - GdkFocusEvent *self = gdk_event_alloc (GDK_FOCUS_CHANGE, surface, device, source_device, GDK_CURRENT_TIME); + GdkFocusEvent *self = gdk_event_alloc (GDK_FOCUS_CHANGE, surface, device, GDK_CURRENT_TIME); self->focus_in = focus_in; @@ -2325,7 +2278,6 @@ GDK_DEFINE_EVENT_TYPE (GdkScrollEvent, gdk_scroll_event, GdkEvent * gdk_scroll_event_new (GdkSurface *surface, GdkDevice *device, - GdkDevice *source_device, GdkDeviceTool *tool, guint32 time, GdkModifierType state, @@ -2333,7 +2285,7 @@ gdk_scroll_event_new (GdkSurface *surface, double delta_y, gboolean is_stop) { - GdkScrollEvent *self = gdk_event_alloc (GDK_SCROLL, surface, device, source_device, time); + GdkScrollEvent *self = gdk_event_alloc (GDK_SCROLL, surface, device, time); self->tool = tool != NULL ? g_object_ref (tool) : NULL; self->state = state; @@ -2348,14 +2300,13 @@ gdk_scroll_event_new (GdkSurface *surface, GdkEvent * gdk_scroll_event_new_discrete (GdkSurface *surface, GdkDevice *device, - GdkDevice *source_device, GdkDeviceTool *tool, guint32 time, GdkModifierType state, GdkScrollDirection direction, gboolean emulated) { - GdkScrollEvent *self = gdk_event_alloc (GDK_SCROLL, surface, device, source_device, time); + GdkScrollEvent *self = gdk_event_alloc (GDK_SCROLL, surface, device, time); self->tool = tool != NULL ? g_object_ref (tool) : NULL; self->state = state; @@ -2478,7 +2429,6 @@ GDK_DEFINE_EVENT_TYPE (GdkTouchpadEvent, gdk_touchpad_event, GdkEvent * gdk_touchpad_event_new_swipe (GdkSurface *surface, GdkDevice *device, - GdkDevice *source_device, guint32 time, GdkModifierType state, GdkTouchpadGesturePhase phase, @@ -2488,7 +2438,7 @@ gdk_touchpad_event_new_swipe (GdkSurface *surface, double dx, double dy) { - GdkTouchpadEvent *self = gdk_event_alloc (GDK_TOUCHPAD_SWIPE, surface, device, source_device, time); + GdkTouchpadEvent *self = gdk_event_alloc (GDK_TOUCHPAD_SWIPE, surface, device, time); self->state = state; self->phase = phase; @@ -2504,7 +2454,6 @@ gdk_touchpad_event_new_swipe (GdkSurface *surface, GdkEvent * gdk_touchpad_event_new_pinch (GdkSurface *surface, GdkDevice *device, - GdkDevice *source_device, guint32 time, GdkModifierType state, GdkTouchpadGesturePhase phase, @@ -2516,7 +2465,7 @@ gdk_touchpad_event_new_pinch (GdkSurface *surface, double scale, double angle_delta) { - GdkTouchpadEvent *self = gdk_event_alloc (GDK_TOUCHPAD_PINCH, surface, device, source_device, time); + GdkTouchpadEvent *self = gdk_event_alloc (GDK_TOUCHPAD_PINCH, surface, device, time); self->state = state; self->phase = phase; @@ -2658,14 +2607,13 @@ GDK_DEFINE_EVENT_TYPE (GdkPadEvent, gdk_pad_event, GdkEvent * gdk_pad_event_new_ring (GdkSurface *surface, GdkDevice *device, - GdkDevice *source_device, guint32 time, guint group, guint index, guint mode, double value) { - GdkPadEvent *self = gdk_event_alloc (GDK_PAD_RING, surface, device, source_device, time); + GdkPadEvent *self = gdk_event_alloc (GDK_PAD_RING, surface, device, time); self->group = group; self->index = index; @@ -2678,14 +2626,13 @@ gdk_pad_event_new_ring (GdkSurface *surface, GdkEvent * gdk_pad_event_new_strip (GdkSurface *surface, GdkDevice *device, - GdkDevice *source_device, guint32 time, guint group, guint index, guint mode, double value) { - GdkPadEvent *self = gdk_event_alloc (GDK_PAD_STRIP, surface, device, source_device, time); + GdkPadEvent *self = gdk_event_alloc (GDK_PAD_STRIP, surface, device, time); self->group = group; self->index = index; @@ -2699,7 +2646,6 @@ GdkEvent * gdk_pad_event_new_button (GdkEventType type, GdkSurface *surface, GdkDevice *device, - GdkDevice *source_device, guint32 time, guint group, guint button, @@ -2710,7 +2656,7 @@ gdk_pad_event_new_button (GdkEventType type, g_return_val_if_fail (type == GDK_PAD_BUTTON_PRESS || type == GDK_PAD_BUTTON_RELEASE, NULL); - self = gdk_event_alloc (type, surface, device, source_device, time); + self = gdk_event_alloc (type, surface, device, time); self->group = group; self->button = button; @@ -2722,12 +2668,11 @@ gdk_pad_event_new_button (GdkEventType type, GdkEvent * gdk_pad_event_new_group_mode (GdkSurface *surface, GdkDevice *device, - GdkDevice *source_device, guint32 time, guint group, guint mode) { - GdkPadEvent *self = gdk_event_alloc (GDK_PAD_GROUP_MODE, surface, device, source_device, time); + GdkPadEvent *self = gdk_event_alloc (GDK_PAD_GROUP_MODE, surface, device, time); self->group = group; self->mode = mode; @@ -2856,7 +2801,7 @@ gdk_motion_event_get_axes (GdkEvent *event, guint *n_axes) { GdkMotionEvent *self = (GdkMotionEvent *) event; - GdkDevice *source_device = gdk_event_get_source_device (event); + GdkDevice *source_device = gdk_event_get_device (event); if (source_device == NULL) return FALSE; @@ -2885,7 +2830,6 @@ GDK_DEFINE_EVENT_TYPE (GdkMotionEvent, gdk_motion_event, GdkEvent * gdk_motion_event_new (GdkSurface *surface, GdkDevice *device, - GdkDevice *source_device, GdkDeviceTool *tool, guint32 time, GdkModifierType state, @@ -2893,7 +2837,7 @@ gdk_motion_event_new (GdkSurface *surface, double y, double *axes) { - GdkMotionEvent *self = gdk_event_alloc (GDK_MOTION_NOTIFY, surface, device, source_device, time); + GdkMotionEvent *self = gdk_event_alloc (GDK_MOTION_NOTIFY, surface, device, time); self->tool = tool ? g_object_ref (tool) : NULL; self->state = state; @@ -3001,7 +2945,6 @@ GdkEvent * gdk_proximity_event_new (GdkEventType type, GdkSurface *surface, GdkDevice *device, - GdkDevice *source_device, GdkDeviceTool *tool, guint32 time) { @@ -3010,7 +2953,7 @@ gdk_proximity_event_new (GdkEventType type, g_return_val_if_fail (type == GDK_PROXIMITY_IN || type == GDK_PROXIMITY_OUT, NULL); - self = gdk_event_alloc (type, surface, device, source_device, time); + self = gdk_event_alloc (type, surface, device, time); self->tool = tool ? g_object_ref (tool) : NULL; @@ -3086,7 +3029,7 @@ gdk_dnd_event_new (GdkEventType type, type == GDK_DRAG_LEAVE || type == GDK_DROP_START, NULL); - self = gdk_event_alloc (type, surface, device, NULL, time); + self = gdk_event_alloc (type, surface, device, time); self->drop = drop != NULL ? g_object_ref (drop) : NULL; self->x = x; @@ -3139,11 +3082,10 @@ GDK_DEFINE_EVENT_TYPE (GdkGrabBrokenEvent, gdk_grab_broken_event, GdkEvent * gdk_grab_broken_event_new (GdkSurface *surface, GdkDevice *device, - GdkDevice *source_device, GdkSurface *grab_surface, gboolean implicit) { - GdkGrabBrokenEvent *self = gdk_event_alloc (GDK_GRAB_BROKEN, surface, device, source_device, GDK_CURRENT_TIME); + GdkGrabBrokenEvent *self = gdk_event_alloc (GDK_GRAB_BROKEN, surface, device, GDK_CURRENT_TIME); self->grab_surface = grab_surface; self->implicit = implicit; diff --git a/gdk/gdkevents.h b/gdk/gdkevents.h index 53bd51b98c..0d4888cb6d 100644 --- a/gdk/gdkevents.h +++ b/gdk/gdkevents.h @@ -350,9 +350,6 @@ GdkSeat * gdk_event_get_seat (GdkEvent *event); GDK_AVAILABLE_IN_ALL GdkDevice * gdk_event_get_device (GdkEvent *event); -GDK_AVAILABLE_IN_ALL -GdkDevice * gdk_event_get_source_device (GdkEvent *event); - GDK_AVAILABLE_IN_ALL GdkDeviceTool * gdk_event_get_device_tool (GdkEvent *event); diff --git a/gdk/gdkeventsprivate.h b/gdk/gdkeventsprivate.h index a21e458746..b7eae78706 100644 --- a/gdk/gdkeventsprivate.h +++ b/gdk/gdkeventsprivate.h @@ -42,7 +42,6 @@ typedef struct _GdkEventClass GdkEventClass; * @event_type: the specialized event type * @surface: the surface of the event * @device: the device of the event - * @source_device: the source device * @time: a serial identifier of the event that can be used to order * two events * @flags: event flags @@ -63,7 +62,6 @@ struct _GdkEvent /* The devices associated to the event */ GdkDevice *device; - GdkDevice *source_device; guint32 time; guint16 flags; @@ -450,7 +448,6 @@ void gdk_event_init_types (void); GdkEvent * gdk_button_event_new (GdkEventType type, GdkSurface *surface, GdkDevice *device, - GdkDevice *source_device, GdkDeviceTool *tool, guint32 time, GdkModifierType state, @@ -461,7 +458,6 @@ GdkEvent * gdk_button_event_new (GdkEventType type, GdkEvent * gdk_motion_event_new (GdkSurface *surface, GdkDevice *device, - GdkDevice *source_device, GdkDeviceTool *tool, guint32 time, GdkModifierType state, @@ -472,7 +468,6 @@ GdkEvent * gdk_motion_event_new (GdkSurface *surface, GdkEvent * gdk_crossing_event_new (GdkEventType type, GdkSurface *surface, GdkDevice *device, - GdkDevice *source_device, guint32 time, GdkModifierType state, double x, @@ -483,14 +478,12 @@ GdkEvent * gdk_crossing_event_new (GdkEventType type, GdkEvent * gdk_proximity_event_new (GdkEventType type, GdkSurface *surface, GdkDevice *device, - GdkDevice *source_device, GdkDeviceTool *tool, guint32 time); GdkEvent * gdk_key_event_new (GdkEventType type, GdkSurface *surface, GdkDevice *device, - GdkDevice *source_device, guint32 time, guint keycode, GdkModifierType modifiers, @@ -500,7 +493,6 @@ GdkEvent * gdk_key_event_new (GdkEventType type, GdkEvent * gdk_focus_event_new (GdkSurface *surface, GdkDevice *device, - GdkDevice *source_device, gboolean focus_in); GdkEvent * gdk_configure_event_new (GdkSurface *surface, @@ -511,7 +503,6 @@ GdkEvent * gdk_delete_event_new (GdkSurface *surface); GdkEvent * gdk_scroll_event_new (GdkSurface *surface, GdkDevice *device, - GdkDevice *source_device, GdkDeviceTool *tool, guint32 time, GdkModifierType state, @@ -521,7 +512,6 @@ GdkEvent * gdk_scroll_event_new (GdkSurface *surface, GdkEvent * gdk_scroll_event_new_discrete (GdkSurface *surface, GdkDevice *device, - GdkDevice *source_device, GdkDeviceTool *tool, guint32 time, GdkModifierType state, @@ -532,7 +522,6 @@ GdkEvent * gdk_touch_event_new (GdkEventType type, GdkEventSequence *sequence, GdkSurface *surface, GdkDevice *device, - GdkDevice *source_device, guint32 time, GdkModifierType state, double x, @@ -542,7 +531,6 @@ GdkEvent * gdk_touch_event_new (GdkEventType type, GdkEvent * gdk_touchpad_event_new_swipe (GdkSurface *surface, GdkDevice *device, - GdkDevice *source_device, guint32 time, GdkModifierType state, GdkTouchpadGesturePhase phase, @@ -554,7 +542,6 @@ GdkEvent * gdk_touchpad_event_new_swipe (GdkSurface *surface, GdkEvent * gdk_touchpad_event_new_pinch (GdkSurface *surface, GdkDevice *device, - GdkDevice *source_device, guint32 time, GdkModifierType state, GdkTouchpadGesturePhase phase, @@ -568,7 +555,6 @@ GdkEvent * gdk_touchpad_event_new_pinch (GdkSurface *surface, GdkEvent * gdk_pad_event_new_ring (GdkSurface *surface, GdkDevice *device, - GdkDevice *source_device, guint32 time, guint group, guint index, @@ -577,7 +563,6 @@ GdkEvent * gdk_pad_event_new_ring (GdkSurface *surface, GdkEvent * gdk_pad_event_new_strip (GdkSurface *surface, GdkDevice *device, - GdkDevice *source_device, guint32 time, guint group, guint index, @@ -587,7 +572,6 @@ GdkEvent * gdk_pad_event_new_strip (GdkSurface *surface, GdkEvent * gdk_pad_event_new_button (GdkEventType type, GdkSurface *surface, GdkDevice *device, - GdkDevice *source_device, guint32 time, guint group, guint button, @@ -595,7 +579,6 @@ GdkEvent * gdk_pad_event_new_button (GdkEventType type, GdkEvent * gdk_pad_event_new_group_mode (GdkSurface *surface, GdkDevice *device, - GdkDevice *source_device, guint32 time, guint group, guint mode); @@ -610,7 +593,6 @@ GdkEvent * gdk_dnd_event_new (GdkEventType type, GdkEvent * gdk_grab_broken_event_new (GdkSurface *surface, GdkDevice *device, - GdkDevice *source_device, GdkSurface *grab_surface, gboolean implicit); diff --git a/gdk/gdksurface.c b/gdk/gdksurface.c index 9edb3597b9..5c3b16170d 100644 --- a/gdk/gdksurface.c +++ b/gdk/gdksurface.c @@ -2222,13 +2222,12 @@ _gdk_windowing_got_event (GdkDisplay *display, gboolean unlink_event = FALSE; GdkDeviceGrabInfo *button_release_grab; GdkPointerSurfaceInfo *pointer_info = NULL; - GdkDevice *device, *source_device; + GdkDevice *device; GdkEventType type; _gdk_display_update_last_event (display, event); device = gdk_event_get_device (event); - source_device = gdk_event_get_source_device (event); if (device) { @@ -2236,12 +2235,7 @@ _gdk_windowing_got_event (GdkDisplay *display, gdk_device_get_source (device) != GDK_SOURCE_TABLET_PAD) { pointer_info = _gdk_display_get_pointer_info (display, device); - - if (source_device != pointer_info->last_physical_device && - gdk_device_get_device_type (source_device) == GDK_DEVICE_TYPE_PHYSICAL) - pointer_info->last_physical_device = source_device; - else if (pointer_info->last_physical_device) - source_device = pointer_info->last_physical_device; + pointer_info->last_physical_device = device; } _gdk_display_device_grab_update (display, device, serial); diff --git a/gdk/wayland/gdkdevice-wayland.c b/gdk/wayland/gdkdevice-wayland.c index b6aa066773..d503f6cf93 100644 --- a/gdk/wayland/gdkdevice-wayland.c +++ b/gdk/wayland/gdkdevice-wayland.c @@ -561,7 +561,6 @@ emulate_crossing (GdkSurface *surface, event = gdk_crossing_event_new (type, surface, device, - device, time_, state, x, y, @@ -586,7 +585,6 @@ emulate_touch_crossing (GdkSurface *surface, event = gdk_crossing_event_new (type, surface, device, - source, time_, 0, touch->x, touch->y, @@ -602,7 +600,7 @@ emulate_focus (GdkSurface *surface, gboolean focus_in, guint32 time_) { - GdkEvent *event = gdk_focus_event_new (surface, device, device, focus_in); + GdkEvent *event = gdk_focus_event_new (surface, device, focus_in); _gdk_wayland_display_deliver_event (gdk_surface_get_display (surface), event); } @@ -1326,7 +1324,6 @@ flush_discrete_scroll_event (GdkWaylandSeat *seat, source = get_scroll_device (seat, seat->pointer_info.frame.source); event = gdk_scroll_event_new_discrete (seat->pointer_info.focus, - seat->logical_pointer, source, NULL, seat->pointer_info.time, @@ -1348,7 +1345,6 @@ flush_smooth_scroll_event (GdkWaylandSeat *seat, source = get_scroll_device (seat, seat->pointer_info.frame.source); event = gdk_scroll_event_new (seat->pointer_info.focus, - seat->logical_pointer, source, NULL, seat->pointer_info.time, @@ -1466,7 +1462,6 @@ pointer_handle_enter (void *data, event = gdk_crossing_event_new (GDK_ENTER_NOTIFY, seat->pointer_info.focus, seat->logical_pointer, - seat->pointer, 0, 0, seat->pointer_info.surface_x, @@ -1521,7 +1516,6 @@ pointer_handle_leave (void *data, event = gdk_crossing_event_new (GDK_LEAVE_NOTIFY, seat->pointer_info.focus, seat->logical_pointer, - seat->pointer, 0, 0, seat->pointer_info.surface_x, @@ -1565,7 +1559,6 @@ pointer_handle_motion (void *data, event = gdk_motion_event_new (seat->pointer_info.focus, seat->logical_pointer, - seat->pointer, NULL, time, device_get_modifiers (seat->logical_pointer), @@ -1629,7 +1622,6 @@ pointer_handle_button (void *data, event = gdk_button_event_new (state ? GDK_BUTTON_PRESS : GDK_BUTTON_RELEASE, seat->pointer_info.focus, seat->logical_pointer, - seat->pointer, NULL, time, device_get_modifiers (seat->logical_pointer), @@ -1893,7 +1885,6 @@ keyboard_handle_enter (void *data, event = gdk_focus_event_new (seat->keyboard_focus, seat->logical_keyboard, - seat->keyboard, TRUE); GDK_SEAT_NOTE (seat, EVENTS, @@ -1928,7 +1919,6 @@ keyboard_handle_leave (void *data, event = gdk_focus_event_new (seat->keyboard_focus, seat->logical_keyboard, - seat->keyboard, FALSE); g_object_unref (seat->keyboard_focus); @@ -2055,7 +2045,6 @@ deliver_key_event (GdkWaylandSeat *seat, event = gdk_key_event_new (state ? GDK_KEY_PRESS : GDK_KEY_RELEASE, seat->keyboard_focus, seat->logical_keyboard, - seat->keyboard, time_, key, device_get_modifiers (seat->logical_pointer), @@ -2372,7 +2361,6 @@ touch_handle_down (void *data, GDK_SLOT_TO_EVENT_SEQUENCE (touch->id), touch->surface, seat->logical_touch, - seat->touch, time, device_get_modifiers (seat->logical_touch), touch->x, touch->y, @@ -2415,7 +2403,6 @@ touch_handle_up (void *data, GDK_SLOT_TO_EVENT_SEQUENCE (touch->id), touch->surface, seat->logical_touch, - seat->touch, time, device_get_modifiers (seat->logical_touch), touch->x, touch->y, @@ -2460,7 +2447,6 @@ touch_handle_motion (void *data, GDK_SLOT_TO_EVENT_SEQUENCE (touch->id), touch->surface, seat->logical_touch, - seat->touch, time, device_get_modifiers (seat->logical_touch), touch->x, touch->y, @@ -2506,7 +2492,6 @@ touch_handle_cancel (void *data, GDK_SLOT_TO_EVENT_SEQUENCE (touch->id), touch->surface, seat->logical_touch, - seat->touch, GDK_CURRENT_TIME, device_get_modifiers (seat->logical_touch), touch->x, touch->y, @@ -2535,7 +2520,6 @@ emit_gesture_swipe_event (GdkWaylandSeat *seat, seat->pointer_info.time = _time; event = gdk_touchpad_event_new_swipe (seat->pointer_info.focus, - seat->logical_pointer, seat->pointer, _time, device_get_modifiers (seat->logical_pointer), @@ -2632,7 +2616,6 @@ emit_gesture_pinch_event (GdkWaylandSeat *seat, seat->pointer_info.time = _time; event = gdk_touchpad_event_new_pinch (seat->pointer_info.focus, - seat->logical_pointer, seat->pointer, _time, device_get_modifiers (seat->logical_pointer), @@ -3054,7 +3037,7 @@ seat_handle_capabilities (void *data, seat->logical_touch = g_object_new (GDK_TYPE_WAYLAND_DEVICE, "name", "Wayland Touch Logical Pointer", "type", GDK_DEVICE_TYPE_LOGICAL, - "source", GDK_SOURCE_MOUSE, + "source", GDK_SOURCE_TOUCHSCREEN, "has-cursor", TRUE, "display", seat->display, "seat", seat, @@ -3102,14 +3085,13 @@ get_scroll_device (GdkWaylandSeat *seat, { seat->wheel_scrolling = g_object_new (GDK_TYPE_WAYLAND_DEVICE, "name", "Wayland Wheel Scrolling", - "type", GDK_DEVICE_TYPE_PHYSICAL, + "type", GDK_DEVICE_TYPE_LOGICAL, "source", GDK_SOURCE_MOUSE, "has-cursor", TRUE, "display", seat->display, "seat", seat, NULL); - _gdk_device_set_associated_device (seat->wheel_scrolling, seat->logical_pointer); - gdk_seat_device_added (GDK_SEAT (seat), seat->wheel_scrolling); + gdk_seat_device_added (GDK_SEAT (seat), seat->wheel_scrolling); } return seat->wheel_scrolling; @@ -3118,14 +3100,13 @@ get_scroll_device (GdkWaylandSeat *seat, { seat->finger_scrolling = g_object_new (GDK_TYPE_WAYLAND_DEVICE, "name", "Wayland Finger Scrolling", - "type", GDK_DEVICE_TYPE_PHYSICAL, + "type", GDK_DEVICE_TYPE_LOGICAL, "source", GDK_SOURCE_TOUCHPAD, "has-cursor", TRUE, "display", seat->display, "seat", seat, NULL); - _gdk_device_set_associated_device (seat->finger_scrolling, seat->logical_pointer); - gdk_seat_device_added (GDK_SEAT (seat), seat->finger_scrolling); + gdk_seat_device_added (GDK_SEAT (seat), seat->finger_scrolling); } return seat->finger_scrolling; @@ -3134,14 +3115,13 @@ get_scroll_device (GdkWaylandSeat *seat, { seat->continuous_scrolling = g_object_new (GDK_TYPE_WAYLAND_DEVICE, "name", "Wayland Continuous Scrolling", - "type", GDK_DEVICE_TYPE_PHYSICAL, + "type", GDK_DEVICE_TYPE_LOGICAL, "source", GDK_SOURCE_TRACKPOINT, "has-cursor", TRUE, "display", seat->display, "seat", seat, NULL); - _gdk_device_set_associated_device (seat->continuous_scrolling, seat->logical_pointer); - gdk_seat_device_added (GDK_SEAT (seat), seat->continuous_scrolling); + gdk_seat_device_added (GDK_SEAT (seat), seat->continuous_scrolling); } return seat->continuous_scrolling; @@ -3428,7 +3408,6 @@ tablet_tool_handle_proximity_in (void *data, event = gdk_proximity_event_new (GDK_PROXIMITY_IN, tablet->pointer_info.focus, tablet->logical_device, - tablet->stylus_device, tool->tool, tablet->pointer_info.time); gdk_wayland_tablet_set_frame_event (tablet, event); @@ -3459,7 +3438,6 @@ tablet_tool_handle_proximity_out (void *data, event = gdk_proximity_event_new (GDK_PROXIMITY_OUT, tablet->pointer_info.focus, tablet->logical_device, - tablet->stylus_device, tool->tool, tablet->pointer_info.time); gdk_wayland_tablet_set_frame_event (tablet, event); @@ -3496,7 +3474,6 @@ tablet_create_button_event_frame (GdkWaylandTabletData *tablet, event = gdk_button_event_new (evtype, tablet->pointer_info.focus, tablet->logical_device, - tablet->stylus_device, tablet->current_tool->tool, tablet->pointer_info.time, device_get_modifiers (seat->logical_pointer), @@ -3561,7 +3538,6 @@ tablet_tool_handle_motion (void *data, event = gdk_motion_event_new (tablet->pointer_info.focus, tablet->logical_device, - tablet->stylus_device, tool->tool, tablet->pointer_info.time, device_get_modifiers (tablet->logical_device), @@ -3723,7 +3699,6 @@ tablet_tool_handle_wheel (void *data, /* Send smooth event */ event = gdk_scroll_event_new (tablet->pointer_info.focus, tablet->logical_device, - tablet->stylus_device, tablet->current_tool->tool, tablet->pointer_info.time, device_get_modifiers (tablet->logical_device), @@ -3734,7 +3709,6 @@ tablet_tool_handle_wheel (void *data, /* Send discrete event */ event = gdk_scroll_event_new_discrete (tablet->pointer_info.focus, - tablet->logical_device, tablet->stylus_device, tablet->current_tool->tool, tablet->pointer_info.time, @@ -3845,7 +3819,6 @@ tablet_pad_ring_handle_frame (void *data, g_message ("tablet pad ring handle frame, ring = %p", wp_tablet_pad_ring)); event = gdk_pad_event_new_ring (seat->keyboard_focus, - pad->device, pad->device, time, g_list_index (pad->mode_groups, group), @@ -3920,7 +3893,6 @@ tablet_pad_strip_handle_frame (void *data, wp_tablet_pad_strip)); event = gdk_pad_event_new_strip (seat->keyboard_focus, - pad->device, pad->device, time, g_list_index (pad->mode_groups, group), @@ -4046,7 +4018,6 @@ tablet_pad_group_handle_mode (void *data, n_group = g_list_index (pad->mode_groups, group); event = gdk_pad_event_new_group_mode (seat->keyboard_focus, - pad->device, pad->device, time, n_group, @@ -4162,7 +4133,6 @@ tablet_pad_handle_button (void *data, : GDK_PAD_BUTTON_RELEASE, GDK_WAYLAND_SEAT (pad->seat)->keyboard_focus, pad->device, - pad->device, time, n_group, button, @@ -4893,7 +4863,7 @@ _gdk_wayland_seat_get_implicit_grab_serial (GdkSeat *seat, if (event) { - GdkDevice *source = gdk_event_get_source_device (event); + GdkDevice *source = gdk_event_get_device (event); GdkWaylandSeat *wayland_seat = GDK_WAYLAND_SEAT (seat); GList *l; @@ -4976,7 +4946,6 @@ gdk_wayland_device_unset_touch_grab (GdkDevice *gdk_device, GDK_SLOT_TO_EVENT_SEQUENCE (touch->id), touch->surface, seat->logical_touch, - seat->touch, GDK_CURRENT_TIME, device_get_modifiers (seat->logical_touch), touch->x, touch->y, diff --git a/gdk/win32/gdkdevicemanager-win32.c b/gdk/win32/gdkdevicemanager-win32.c index 80f6676a85..5ca900b850 100644 --- a/gdk/win32/gdkdevicemanager-win32.c +++ b/gdk/win32/gdkdevicemanager-win32.c @@ -1061,7 +1061,6 @@ gdk_input_other_event (GdkDisplay *display, event = gdk_button_event_new (event_type, window, device_manager->core_pointer, - GDK_DEVICE (source_device), NULL, _gdk_win32_get_next_tick (msg->time), event_state, @@ -1095,7 +1094,6 @@ gdk_input_other_event (GdkDisplay *display, event = gdk_motion_event_new (window, device_manager->core_pointer, - GDK_DEVICE (source_device), NULL, _gdk_win32_get_next_tick (msg->time), event_state, diff --git a/gdk/win32/gdkevents-win32.c b/gdk/win32/gdkevents-win32.c index cd7fea354c..67a52e69b1 100644 --- a/gdk/win32/gdkevents-win32.c +++ b/gdk/win32/gdkevents-win32.c @@ -201,13 +201,11 @@ generate_focus_event (GdkDeviceManagerWin32 *device_manager, gboolean in) { GdkDevice *device; - GdkDevice *source_device; GdkEvent *event; device = GDK_DEVICE_MANAGER_WIN32 (device_manager)->core_keyboard; - source_device = GDK_DEVICE_MANAGER_WIN32 (device_manager)->system_keyboard; - event = gdk_focus_event_new (window, device, source_device, in); + event = gdk_focus_event_new (window, device, in); _gdk_win32_append_event (event); } @@ -220,22 +218,14 @@ generate_grab_broken_event (GdkDeviceManagerWin32 *device_manager, { GdkEvent *event; GdkDevice *device; - GdkDevice *source_device; if (keyboard) - { - device = device_manager->core_keyboard; - source_device = device_manager->system_keyboard; - } + device = device_manager->core_keyboard; else - { - device = device_manager->core_pointer; - source_device = device_manager->system_pointer; - } + device = device_manager->core_pointer; event = gdk_grab_broken_event_new (window, device, - source_device, grab_window, FALSE); @@ -1079,7 +1069,6 @@ send_crossing_event (GdkDisplay *display, event = gdk_crossing_event_new (type, window, device_manager->core_pointer, - device_manager->system_pointer, _gdk_win32_get_next_tick (time_), mask, pt.x / impl->surface_scale, @@ -1588,7 +1577,6 @@ generate_button_event (GdkEventType type, event = gdk_button_event_new (type, window, device_manager->core_pointer, - device_manager->system_pointer, NULL, _gdk_win32_get_next_tick (msg->time), build_pointer_event_state (msg), @@ -2132,7 +2120,6 @@ gdk_event_translate (MSG *msg, event = gdk_key_event_new (GDK_KEY_PRESS, window, device_manager_win32->core_keyboard, - device_manager_win32->system_keyboard, _gdk_win32_get_next_tick (msg->time), 0, 0, @@ -2337,7 +2324,6 @@ gdk_event_translate (MSG *msg, : GDK_KEY_RELEASE, window, device_manager_win32->core_keyboard, - device_manager_win32->system_keyboard, _gdk_win32_get_next_tick (msg->time), state, keycode, @@ -2412,7 +2398,6 @@ gdk_event_translate (MSG *msg, event = gdk_key_event_new (GDK_KEY_PRESS, window, device_manager_win32->core_keyboard, - device_manager_win32->system_keyboard, _gdk_win32_get_next_tick (msg->time), build_key_event_state (key_state), 0, @@ -2426,7 +2411,6 @@ gdk_event_translate (MSG *msg, event = gdk_key_event_new (GDK_KEY_RELEASE, window, device_manager_win32->core_keyboard, - device_manager_win32->system_keyboard, _gdk_win32_get_next_tick (msg->time), build_key_event_state (key_state), 0, @@ -2639,7 +2623,6 @@ gdk_event_translate (MSG *msg, event = gdk_motion_event_new (window, device_manager_win32->core_pointer, - device_manager_win32->system_pointer, NULL, _gdk_win32_get_next_tick (msg->time), build_pointer_event_state (msg), @@ -2765,7 +2748,6 @@ gdk_event_translate (MSG *msg, event = gdk_scroll_event_new (window, device_manager_win32->core_pointer, - device_manager_win32->system_pointer, NULL, _gdk_win32_get_next_tick (msg->time), build_pointer_event_state (msg), @@ -2788,7 +2770,6 @@ gdk_event_translate (MSG *msg, event = gdk_scroll_event_new_discrete (window, device_manager_win32->core_pointer, - device_manager_win32->system_pointer, NULL, _gdk_win32_get_next_tick (msg->time), build_pointer_event_state (msg), diff --git a/gdk/x11/gdkdevicemanager-xi2.c b/gdk/x11/gdkdevicemanager-xi2.c index c26ef984b6..d8327f2ec2 100644 --- a/gdk/x11/gdkdevicemanager-xi2.c +++ b/gdk/x11/gdkdevicemanager-xi2.c @@ -1440,7 +1440,7 @@ _gdk_device_manager_xi2_handle_focus (GdkSurface *surface, { GdkEvent *event; - event = gdk_focus_event_new (surface, device, source_device, focus_in); + event = gdk_focus_event_new (surface, device, focus_in); gdk_display_put_event (gdk_surface_get_display (surface), event); gdk_event_unref (event); } @@ -1581,7 +1581,6 @@ gdk_x11_device_manager_xi2_translate_event (GdkEventTranslator *translator, : GDK_KEY_RELEASE, surface, device, - source_device, xev->time, xev->detail, state, @@ -1647,7 +1646,6 @@ gdk_x11_device_manager_xi2_translate_event (GdkEventTranslator *translator, GUINT_TO_POINTER (xev->sourceid)); event = gdk_scroll_event_new_discrete (surface, - device, source_device, NULL, xev->time, @@ -1681,7 +1679,6 @@ gdk_x11_device_manager_xi2_translate_event (GdkEventTranslator *translator, : GDK_BUTTON_RELEASE, surface, device, - source_device, source_device->last_tool, xev->time, _gdk_x11_device_xi2_translate_state (&xev->mods, &xev->buttons, &xev->group), @@ -1734,7 +1731,6 @@ gdk_x11_device_manager_xi2_translate_event (GdkEventTranslator *translator, event = gdk_scroll_event_new (surface, device, - source_device, NULL, xev->time, _gdk_x11_device_xi2_translate_state (&xev->mods, &xev->buttons, &xev->group), @@ -1755,7 +1751,6 @@ gdk_x11_device_manager_xi2_translate_event (GdkEventTranslator *translator, event = gdk_motion_event_new (surface, device, - source_device, source_device->last_tool, xev->time, _gdk_x11_device_xi2_translate_state (&xev->mods, &xev->buttons, &xev->group), @@ -1807,7 +1802,6 @@ gdk_x11_device_manager_xi2_translate_event (GdkEventTranslator *translator, GUINT_TO_POINTER (xev->detail), surface, device, - source_device, xev->time, state, x, y, @@ -1855,7 +1849,6 @@ gdk_x11_device_manager_xi2_translate_event (GdkEventTranslator *translator, GUINT_TO_POINTER (xev->detail), surface, device, - source_device, xev->time, state, x, y, @@ -1922,7 +1915,6 @@ gdk_x11_device_manager_xi2_translate_event (GdkEventTranslator *translator, : GDK_LEAVE_NOTIFY, surface, device, - source_device, xev->time, state, (double) xev->event_x / scale, diff --git a/gdk/x11/gdkeventsource.c b/gdk/x11/gdkeventsource.c index 810202614d..7131f31c95 100644 --- a/gdk/x11/gdkeventsource.c +++ b/gdk/x11/gdkeventsource.c @@ -117,7 +117,6 @@ handle_focus_change (GdkEvent *event) focus_event = gdk_focus_event_new (gdk_event_get_surface (event), gdk_event_get_device (event), - gdk_event_get_source_device (event), focus_in); gdk_display_put_event (gdk_event_get_display (event), focus_event); gdk_event_unref (focus_event); @@ -138,7 +137,6 @@ create_synth_crossing_event (GdkEventType evtype, event = gdk_crossing_event_new (evtype, gdk_event_get_surface (real_event), gdk_event_get_device (real_event), - gdk_event_get_source_device (real_event), gdk_event_get_time (real_event), gdk_event_get_modifier_state (real_event), x, y, diff --git a/gtk/gtkeventcontrollerscroll.c b/gtk/gtkeventcontrollerscroll.c index b466bb74ee..46573ca7de 100644 --- a/gtk/gtkeventcontrollerscroll.c +++ b/gtk/gtkeventcontrollerscroll.c @@ -258,7 +258,7 @@ gtk_event_controller_scroll_handle_event (GtkEventController *controller, direction = gdk_scroll_event_get_direction (event); if (direction == GDK_SCROLL_SMOOTH) { - GdkDevice *device = gdk_event_get_source_device (event); + GdkDevice *device = gdk_event_get_device (event); GdkInputSource input_source = gdk_device_get_source (device); gdk_scroll_event_get_deltas (event, &dx, &dy); diff --git a/gtk/gtkflowbox.c b/gtk/gtkflowbox.c index ef4aaf809b..2a40252675 100644 --- a/gtk/gtkflowbox.c +++ b/gtk/gtkflowbox.c @@ -2875,7 +2875,7 @@ gtk_flow_box_click_gesture_released (GtkGestureClick *gesture, sequence = gtk_gesture_single_get_current_sequence (GTK_GESTURE_SINGLE (gesture)); event = gtk_gesture_get_last_event (GTK_GESTURE (gesture), sequence); - source = gdk_device_get_source (gdk_event_get_source_device (event)); + source = gdk_device_get_source (gdk_event_get_device (event)); if (source == GDK_SOURCE_TOUCHSCREEN) modify = !modify; diff --git a/gtk/gtkgesture.c b/gtk/gtkgesture.c index 84944da8e3..ce40044901 100644 --- a/gtk/gtkgesture.c +++ b/gtk/gtkgesture.c @@ -611,7 +611,7 @@ gtk_gesture_handle_event (GtkEventController *controller, GdkModifierType state; GtkWidget *target; - source_device = gdk_event_get_source_device (event); + source_device = gdk_event_get_device (event); if (!source_device) return FALSE; diff --git a/gtk/gtkgestureclick.c b/gtk/gtkgestureclick.c index 15039ab767..27f6e1367a 100644 --- a/gtk/gtkgestureclick.c +++ b/gtk/gtkgestureclick.c @@ -202,7 +202,7 @@ gtk_gesture_click_begin (GtkGesture *gesture, priv = gtk_gesture_click_get_instance_private (click); event = gtk_gesture_get_last_event (gesture, sequence); current = gtk_gesture_single_get_current_sequence (GTK_GESTURE_SINGLE (gesture)); - device = gdk_event_get_source_device (event); + device = gdk_event_get_device (event); event_type = gdk_event_get_event_type (event); if (event_type == GDK_BUTTON_PRESS) diff --git a/gtk/gtkgesturesingle.c b/gtk/gtkgesturesingle.c index 6e3dd3b406..3bd3a19573 100644 --- a/gtk/gtkgesturesingle.c +++ b/gtk/gtkgesturesingle.c @@ -143,7 +143,7 @@ gtk_gesture_single_handle_event (GtkEventController *controller, gboolean retval, test_touchscreen = FALSE; GdkEventType event_type; - source_device = gdk_event_get_source_device (event); + source_device = gdk_event_get_device (event); if (!source_device) return FALSE; diff --git a/gtk/gtkimcontext.c b/gtk/gtkimcontext.c index 00ff8f33df..b6997482ee 100644 --- a/gtk/gtkimcontext.c +++ b/gtk/gtkimcontext.c @@ -603,7 +603,6 @@ gtk_im_context_filter_key (GtkIMContext *context, key = gdk_key_event_new (press ? GDK_KEY_PRESS : GDK_KEY_RELEASE, surface, device, - source_device, time, keycode, state, diff --git a/gtk/gtkimcontextsimple.c b/gtk/gtkimcontextsimple.c index cf5669addd..65eaf25dbb 100644 --- a/gtk/gtkimcontextsimple.c +++ b/gtk/gtkimcontextsimple.c @@ -809,7 +809,6 @@ no_sequence_matches (GtkIMContextSimple *context_simple, GdkEvent *tmp_event = gdk_key_event_new (GDK_KEY_PRESS, gdk_event_get_surface (event), gdk_event_get_device (event), - gdk_event_get_source_device (event), gdk_event_get_time (event), priv->compose_buffer[len + i], gdk_event_get_modifier_state (event), diff --git a/gtk/gtklistbox.c b/gtk/gtklistbox.c index fb06f24ed4..a95c87457a 100644 --- a/gtk/gtklistbox.c +++ b/gtk/gtklistbox.c @@ -1849,7 +1849,7 @@ gtk_list_box_click_gesture_released (GtkGestureClick *gesture, state = gdk_event_get_modifier_state (event); extend = (state & GDK_SHIFT_MASK) != 0; modify = (state & GDK_CONTROL_MASK) != 0; - source = gdk_device_get_source (gdk_event_get_source_device (event)); + source = gdk_device_get_source (gdk_event_get_device (event)); if (source == GDK_SOURCE_TOUCHSCREEN) modify = !modify; diff --git a/gtk/gtkmain.c b/gtk/gtkmain.c index 30d6d20d09..b114de5bc0 100644 --- a/gtk/gtkmain.c +++ b/gtk/gtkmain.c @@ -1127,7 +1127,6 @@ rewrite_event_for_surface (GdkEvent *event, return gdk_button_event_new (type, new_surface, gdk_event_get_device (event), - gdk_event_get_source_device (event), gdk_event_get_device_tool (event), gdk_event_get_time (event), gdk_event_get_modifier_state (event), @@ -1137,7 +1136,6 @@ rewrite_event_for_surface (GdkEvent *event, case GDK_MOTION_NOTIFY: return gdk_motion_event_new (new_surface, gdk_event_get_device (event), - gdk_event_get_source_device (event), gdk_event_get_device_tool (event), gdk_event_get_time (event), gdk_event_get_modifier_state (event), @@ -1151,7 +1149,6 @@ rewrite_event_for_surface (GdkEvent *event, gdk_event_get_event_sequence (event), new_surface, gdk_event_get_device (event), - gdk_event_get_source_device (event), gdk_event_get_time (event), gdk_event_get_modifier_state (event), x, y, @@ -1161,7 +1158,6 @@ rewrite_event_for_surface (GdkEvent *event, gdk_touchpad_event_get_deltas (event, &dx, &dy); return gdk_touchpad_event_new_swipe (new_surface, gdk_event_get_device (event), - gdk_event_get_source_device (event), gdk_event_get_time (event), gdk_event_get_modifier_state (event), gdk_touchpad_event_get_gesture_phase (event), @@ -1172,7 +1168,6 @@ rewrite_event_for_surface (GdkEvent *event, gdk_touchpad_event_get_deltas (event, &dx, &dy); return gdk_touchpad_event_new_pinch (new_surface, gdk_event_get_device (event), - gdk_event_get_source_device (event), gdk_event_get_time (event), gdk_event_get_modifier_state (event), gdk_touchpad_event_get_gesture_phase (event), @@ -1266,7 +1261,6 @@ rewrite_event_for_toplevel (GdkEvent *event) return gdk_key_event_new (gdk_event_get_event_type (event), surface, gdk_event_get_device (event), - gdk_event_get_source_device (event), gdk_event_get_time (event), gdk_key_event_get_keycode (event), gdk_event_get_modifier_state (event), @@ -1542,6 +1536,17 @@ handle_pointing_event (GdkEvent *event) type = gdk_event_get_event_type (event); sequence = gdk_event_get_event_sequence (event); + if (type == GDK_SCROLL && + (gdk_device_get_source (device) == GDK_SOURCE_TOUCHPAD || + gdk_device_get_source (device) == GDK_SOURCE_TRACKPOINT || + gdk_device_get_source (device) == GDK_SOURCE_MOUSE)) + { + /* A bit of a kludge, resolve target lookups for scrolling devices + * on the seat pointer. + */ + device = gdk_seat_get_pointer (gdk_event_get_seat (event)); + } + switch ((guint) type) { case GDK_LEAVE_NOTIFY: diff --git a/gtk/gtkpadcontroller.c b/gtk/gtkpadcontroller.c index df589682ad..dbda9027cd 100644 --- a/gtk/gtkpadcontroller.c +++ b/gtk/gtkpadcontroller.c @@ -210,7 +210,7 @@ gtk_pad_controller_filter_event (GtkEventController *controller, return TRUE; if (pad_controller->pad && - gdk_event_get_source_device (event) != pad_controller->pad) + gdk_event_get_device (event) != pad_controller->pad) return TRUE; return FALSE; @@ -233,7 +233,7 @@ gtk_pad_controller_handle_event (GtkEventController *controller, if (event_type == GDK_PAD_GROUP_MODE) { gtk_pad_controller_handle_mode_switch (pad_controller, - gdk_event_get_source_device (event), + gdk_event_get_device (event), group, mode); return GDK_EVENT_PROPAGATE; diff --git a/gtk/gtkpaned.c b/gtk/gtkpaned.c index 83b6e280b6..cd0676e824 100644 --- a/gtk/gtkpaned.c +++ b/gtk/gtkpaned.c @@ -873,7 +873,7 @@ gesture_drag_begin_cb (GtkGestureDrag *gesture, sequence = gtk_gesture_single_get_current_sequence (GTK_GESTURE_SINGLE (gesture)); event = gtk_gesture_get_last_event (GTK_GESTURE (gesture), sequence); - device = gdk_event_get_source_device (event); + device = gdk_event_get_device (event); paned->panning = FALSE; is_touch = (gdk_event_get_event_type (event) == GDK_TOUCH_BEGIN || diff --git a/gtk/gtkrange.c b/gtk/gtkrange.c index 0277fc8c4a..ef8b1f4f91 100644 --- a/gtk/gtkrange.c +++ b/gtk/gtkrange.c @@ -1881,7 +1881,7 @@ gtk_range_click_gesture_pressed (GtkGestureClick *gesture, state_mask = gdk_event_get_modifier_state (event); shift_pressed = (state_mask & GDK_SHIFT_MASK) != 0; - source_device = gdk_event_get_source_device ((GdkEvent *) event); + source_device = gdk_event_get_device ((GdkEvent *) event); source = gdk_device_get_source (source_device); g_object_get (gtk_widget_get_settings (widget), diff --git a/gtk/gtkscrolledwindow.c b/gtk/gtkscrolledwindow.c index e9c62dbcf8..2a120a716f 100644 --- a/gtk/gtkscrolledwindow.c +++ b/gtk/gtkscrolledwindow.c @@ -1254,7 +1254,7 @@ captured_motion (GtkEventController *controller, state = gtk_event_controller_get_current_event_state (controller); event = gtk_event_controller_get_current_event (controller); - source_device = gdk_event_get_source_device (event); + source_device = gdk_event_get_device (event); input_source = gdk_device_get_source (source_device); if (priv->hscrollbar_visible) diff --git a/gtk/gtktext.c b/gtk/gtktext.c index 2d2985978f..4317654df1 100644 --- a/gtk/gtktext.c +++ b/gtk/gtktext.c @@ -2714,7 +2714,7 @@ gtk_text_click_gesture_pressed (GtkGestureClick *gesture, sel_end = priv->current_pos; have_selection = sel_start != sel_end; - source = gdk_event_get_source_device (event); + source = gdk_event_get_device (event); is_touchscreen = gtk_simulate_touchscreen () || gdk_device_get_source (source) == GDK_SOURCE_TOUCHSCREEN; @@ -2991,7 +2991,7 @@ gtk_text_drag_gesture_update (GtkGestureDrag *gesture, else tmp_pos = gtk_text_find_position (self, x); - source = gdk_event_get_source_device (event); + source = gdk_event_get_device (event); input_source = gdk_device_get_source (source); if (priv->select_words) diff --git a/gtk/gtktextview.c b/gtk/gtktextview.c index 707aac23f4..8be1e73a86 100644 --- a/gtk/gtktextview.c +++ b/gtk/gtktextview.c @@ -5384,7 +5384,7 @@ gtk_text_view_click_gesture_pressed (GtkGestureClick *gesture, GTK_EVENT_SEQUENCE_CLAIMED); gtk_text_view_reset_blink_time (text_view); - device = gdk_event_get_source_device ((GdkEvent *) event); + device = gdk_event_get_device ((GdkEvent *) event); is_touchscreen = gtk_simulate_touchscreen () || gdk_device_get_source (device) == GDK_SOURCE_TOUCHSCREEN; @@ -7220,7 +7220,7 @@ gtk_text_view_drag_gesture_update (GtkGestureDrag *gesture, drag_gesture_get_text_surface_coords (gesture, text_view, &start_x, &start_y, &x, &y); - device = gdk_event_get_source_device (event); + device = gdk_event_get_device (event); is_touchscreen = gtk_simulate_touchscreen () || gdk_device_get_source (device) == GDK_SOURCE_TOUCHSCREEN; @@ -7355,7 +7355,7 @@ gtk_text_view_drag_gesture_end (GtkGestureDrag *gesture, return; event = gtk_gesture_get_last_event (GTK_GESTURE (gesture), sequence); - device = gdk_event_get_source_device (event); + device = gdk_event_get_device (event); is_touchscreen = gtk_simulate_touchscreen () || gdk_device_get_source (device) == GDK_SOURCE_TOUCHSCREEN; diff --git a/gtk/gtktooltip.c b/gtk/gtktooltip.c index 27ab711ef5..284e96d912 100644 --- a/gtk/gtktooltip.c +++ b/gtk/gtktooltip.c @@ -897,7 +897,7 @@ tooltips_enabled (GdkEvent *event) GDK_BUTTON5_MASK)) != 0) return FALSE; - source_device = gdk_event_get_source_device (event); + source_device = gdk_event_get_device (event); if (!source_device) return FALSE; diff --git a/gtk/gtkwidget.c b/gtk/gtkwidget.c index e02699a336..69de2d5ddd 100644 --- a/gtk/gtkwidget.c +++ b/gtk/gtkwidget.c @@ -1922,7 +1922,6 @@ _gtk_widget_emulate_press (GtkWidget *widget, gdk_event_get_event_sequence (event), gdk_event_get_surface (event), gdk_event_get_device (event), - gdk_event_get_source_device (event), gdk_event_get_time (event), gdk_event_get_modifier_state (event), p.x, p.y, @@ -1934,7 +1933,6 @@ _gtk_widget_emulate_press (GtkWidget *widget, press = gdk_button_event_new (GDK_BUTTON_PRESS, gdk_event_get_surface (event), gdk_event_get_device (event), - gdk_event_get_source_device (event), gdk_event_get_device_tool (event), gdk_event_get_time (event), gdk_event_get_modifier_state (event), @@ -1960,7 +1958,6 @@ _gtk_widget_emulate_press (GtkWidget *widget, press = gdk_button_event_new (GDK_BUTTON_PRESS, gdk_event_get_surface (event), gdk_event_get_device (event), - gdk_event_get_source_device (event), gdk_event_get_device_tool (event), gdk_event_get_time (event), gdk_event_get_modifier_state (event), diff --git a/testsuite/gtk/shortcuts.c b/testsuite/gtk/shortcuts.c index 085e3026e2..e0ce9c6509 100644 --- a/testsuite/gtk/shortcuts.c +++ b/testsuite/gtk/shortcuts.c @@ -21,7 +21,6 @@ key_event_new (GdkEventType event_type, event->event_type = event_type; event->surface = g_object_ref (surface); event->device = g_object_ref (device); - event->source_device = g_object_ref (source_device); event->time = time_; key_event->keycode = keycode;