mirror of
https://github.com/Ardour/ardour.git
synced 2025-12-06 06:44:57 +01:00
Hacks to emulate button events
This commit is contained in:
parent
8f32862e58
commit
94fb20c066
2 changed files with 52 additions and 0 deletions
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue