summaryrefslogtreecommitdiff
path: root/gdk/gdkwindow.c
diff options
context:
space:
mode:
authorThomas Wood <thomas.wood@intel.com>2013-02-07 11:59:31 +0000
committerThomas Wood <thomas.wood@intel.com>2013-02-12 15:30:56 +0000
commit8568d66a7338f4678d4c3d6cde00e2870c8f38ee (patch)
treef1dcd3f2bdab97f84623d2d83e40498eb8284df0 /gdk/gdkwindow.c
parenta8862727c93f1ffbcf98b28bd7acced9793add2b (diff)
downloadgtk+-8568d66a7338f4678d4c3d6cde00e2870c8f38ee.tar.gz
gdkwindow: don't use last_slave for the source device if it is NULL
Some backends do not have slave devices, which means last_slave may be NULL. Use the current device as the source device if last_slave is NULL when synthesizing a crossing event. https://bugzilla.gnome.org/show_bug.cgi?id=692411
Diffstat (limited to 'gdk/gdkwindow.c')
-rw-r--r--gdk/gdkwindow.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/gdk/gdkwindow.c b/gdk/gdkwindow.c
index b6d4e09faa..0bc984def3 100644
--- a/gdk/gdkwindow.c
+++ b/gdk/gdkwindow.c
@@ -9164,10 +9164,17 @@ do_synthesize_crossing_event (gpointer data)
serial);
if (new_window_under_pointer != pointer_info->window_under_pointer)
{
+ GdkDevice *source_device;
+
+ if (pointer_info->last_slave)
+ source_device = pointer_info->last_slave;
+ else
+ source_device = device;
+
_gdk_synthesize_crossing_events (display,
pointer_info->window_under_pointer,
new_window_under_pointer,
- device, pointer_info->last_slave,
+ device, source_device,
GDK_CROSSING_NORMAL,
pointer_info->toplevel_x,
pointer_info->toplevel_y,