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_BEGIN:
|
||||||
case GDK_TOUCH_UPDATE:
|
case GDK_TOUCH_UPDATE:
|
||||||
case GDK_TOUCH_END:
|
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,
|
convert_toplevel_coords_to_window (event_win,
|
||||||
toplevel_x, toplevel_y,
|
toplevel_x, toplevel_y,
|
||||||
&event->touch.x, &event->touch.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);
|
window = gdk_window_lookup_for_display (display, xev->event);
|
||||||
g_object_ref (window);
|
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.window = window;
|
||||||
event->touch.time = xev->time;
|
event->touch.time = xev->time;
|
||||||
event->touch.x = xev->event_x;
|
event->touch.x = xev->event_x;
|
||||||
|
|
@ -2275,6 +2302,9 @@ gdk_event_translate (GdkDisplay *display,
|
||||||
return FALSE;
|
return FALSE;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
#if 0
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
if (!set_screen_from_root (display, event, xev->root)) {
|
if (!set_screen_from_root (display, event, xev->root)) {
|
||||||
return_val = FALSE;
|
return_val = FALSE;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue