diff --git a/libs/tk/ydk/gdkwindow.c b/libs/tk/ydk/gdkwindow.c index 054d628814..4461aed284 100644 --- a/libs/tk/ydk/gdkwindow.c +++ b/libs/tk/ydk/gdkwindow.c @@ -10911,6 +10911,28 @@ proxy_button_event (GdkEvent *source_event, case GDK_TOUCH_BEGIN: case GDK_TOUCH_UPDATE: case GDK_TOUCH_END: + #if 0 /* emulate button event */ + if (source_event->touch.flags & 0x20000) { + if (type == GDK_TOUCH_UPDATE) { + return FALSE; + } + convert_toplevel_coords_to_window (event_win, + toplevel_x, toplevel_y, + &event->button.x, &event->button.y); + + event->button.type = type == GDK_TOUCH_BEGIN ? GDK_BUTTON_PRESS : GDK_BUTTON_RELEASE; + event->button.time = source_event->touch.time; + event->button.x_root = source_event->touch.x_root; + event->button.y_root = source_event->touch.y_root; + event->button.axes = NULL; + event->button.state = 0; + event->button.button = 1; + event->button.device = display->core_pointer; + //if (type == GDK_BUTTON_PRESS) _gdk_event_button_generate (display, event); + return TRUE; + } + #endif + convert_toplevel_coords_to_window (event_win, toplevel_x, toplevel_y, &event->touch.x, &event->touch.y); diff --git a/libs/tk/ydk/x11/gdkevents-x11.c b/libs/tk/ydk/x11/gdkevents-x11.c index 6b21642539..041d41ff99 100644 --- a/libs/tk/ydk/x11/gdkevents-x11.c +++ b/libs/tk/ydk/x11/gdkevents-x11.c @@ -2250,6 +2250,33 @@ gdk_event_translate (GdkDisplay *display, window = gdk_window_lookup_for_display (display, xev->event); g_object_ref (window); +#if 0 // XXX doing this here causes a _gdk_display_pointer_grab, and subsequent touch events are directed there + if (xev->flags & 0x20000) { + /* first touch */ + event->button.type = GDK_BUTTON_PRESS; + event->button.window = window; + event->button.time = xev->time; + event->button.x = xev->event_x; + event->button.y = xev->event_y; + event->button.x_root = xev->root_x; + event->button.y_root = xev->root_y; + event->button.axes = NULL; + event->button.state = 0; + event->button.button = 1; + event->button.device = display->core_pointer; + switch (xevent->xcookie.evtype) { + case XI_TouchBegin: + event->touch.type = GDK_BUTTON_PRESS; + break; + case XI_TouchEnd: + event->touch.type = GDK_BUTTON_RELEASE; + break; + default: + return FALSE; + break; + } + } else { +#endif event->touch.window = window; event->touch.time = xev->time; event->touch.x = xev->event_x; @@ -2275,6 +2302,9 @@ gdk_event_translate (GdkDisplay *display, return FALSE; break; } +#if 0 + } +#endif if (!set_screen_from_root (display, event, xev->root)) { return_val = FALSE;