summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarlos Garnacho <carlosg@gnome.org>2015-12-09 12:42:33 +0100
committerCarlos Garnacho <carlosg@gnome.org>2015-12-15 00:40:21 +0100
commit09947a63ed563777d2655d1833cca56798583809 (patch)
treeeb1235dc317dd1bd7557b7c0e351e04483f29543
parent8ec3fb39a2d6160e5a44045b7ae3d2d0aaab528d (diff)
downloadgtk+-09947a63ed563777d2655d1833cca56798583809.tar.gz
wayland: Make gdk_wayland_device_get_focus() work on touch
So we can figure out the focus for the master device. https://bugzilla.gnome.org/show_bug.cgi?id=759309
-rw-r--r--gdk/wayland/gdkdevice-wayland.c15
1 files changed, 10 insertions, 5 deletions
diff --git a/gdk/wayland/gdkdevice-wayland.c b/gdk/wayland/gdkdevice-wayland.c
index fbff72ba1b..baf40bfb65 100644
--- a/gdk/wayland/gdkdevice-wayland.c
+++ b/gdk/wayland/gdkdevice-wayland.c
@@ -488,12 +488,17 @@ device_emit_grab_crossing (GdkDevice *device,
static GdkWindow *
gdk_wayland_device_get_focus (GdkDevice *device)
{
- GdkWaylandDeviceData *wayland_device = GDK_WAYLAND_DEVICE (device)->device;
-
- if (gdk_device_get_source (device) == GDK_SOURCE_KEYBOARD)
- return wayland_device->keyboard_focus;
+ GdkWaylandSeat *wayland_seat = GDK_WAYLAND_DEVICE (device)->device;
+
+ if (device == wayland_seat->master_keyboard)
+ return wayland_seat->keyboard_focus;
+ else if (device == wayland_seat->master_pointer)
+ return wayland_seat->pointer_focus;
+ else if (device == wayland_seat->touch_master &&
+ GDK_WAYLAND_DEVICE(device)->emulating_touch)
+ return GDK_WAYLAND_DEVICE(device)->emulating_touch->window;
else
- return wayland_device->pointer_focus;
+ return NULL;
}
static GdkGrabStatus