GdkDevice *device,
GdkWindow *new_grab_window)
{
- guint i = 0;
+ guint i;
- while (i < display->touch_implicit_grabs->len)
+ for (i = 0; i < display->touch_implicit_grabs->len; i++)
{
GdkTouchGrabInfo *info;
info = &g_array_index (display->touch_implicit_grabs,
GdkTouchGrabInfo, i);
- if (info->device == device &&
- info->window != new_grab_window)
- {
- generate_grab_broken_event (GDK_WINDOW (info->window),
- device, TRUE, new_grab_window);
- g_array_remove_index_fast (display->touch_implicit_grabs, i);
- }
- else
- i++;
+ if (info->device == device && info->window != new_grab_window)
+ generate_grab_broken_event (GDK_WINDOW (info->window),
+ device, TRUE, new_grab_window);
}
}
if (pointer_info->need_touch_press_enter &&
gdk_device_get_source (pointer_info->last_slave) != GDK_SOURCE_TOUCHSCREEN &&
- gdk_device_get_source (pointer_info->last_slave) != GDK_SOURCE_TOUCHPAD) &&
+ gdk_device_get_source (pointer_info->last_slave) != GDK_SOURCE_TOUCHPAD &&
(source_event->type != GDK_TOUCH_UPDATE ||
- _gdk_event_get_pointer_emulated (source_event))
+ _gdk_event_get_pointer_emulated (source_event)))
{
pointer_info->need_touch_press_enter = FALSE;
need_synthetic_enter = TRUE;
if ((type == GDK_TOUCH_END &&
_gdk_event_get_pointer_emulated (source_event)) &&
pointer_window == pointer_info->window_under_pointer &&
- gdk_device_get_source (source_device) == GDK_SOURCE_TOUCHSCREEN)
+ (gdk_device_get_source (source_device) == GDK_SOURCE_TOUCHSCREEN ||
+ gdk_device_get_source (source_device) == GDK_SOURCE_TOUCHPAD))
{
/* Synthesize a leave notify event
* whenever a touch device is released