gdk: Add touchpad gesture events and event types.

Each gesture type has its separate GdkEvent struct, and begin/update/
end/cancel event types.

There is support for multi-finger swipe (3-4 fingers), and 2-finger
rotate/pinch gestures.
This commit is contained in:
Carlos Garnacho
2015-07-09 18:39:58 +02:00
parent 7281803169
commit a3b402a949
3 changed files with 173 additions and 0 deletions

View File

@ -570,6 +570,24 @@ gdk_event_new (GdkEventType type)
new_event->crossing.x_root = 0.;
new_event->crossing.y_root = 0.;
break;
case GDK_TOUCHPAD_SWIPE:
new_event->touchpad_swipe.x = 0;
new_event->touchpad_swipe.y = 0;
new_event->touchpad_swipe.dx = 0;
new_event->touchpad_swipe.dy = 0;
new_event->touchpad_swipe.x_root = 0;
new_event->touchpad_swipe.y_root = 0;
break;
case GDK_TOUCHPAD_PINCH:
new_event->touchpad_pinch.x = 0;
new_event->touchpad_pinch.y = 0;
new_event->touchpad_pinch.dx = 0;
new_event->touchpad_pinch.dy = 0;
new_event->touchpad_pinch.angle_delta = 0;
new_event->touchpad_pinch.scale = 0;
new_event->touchpad_pinch.x_root = 0;
new_event->touchpad_pinch.y_root = 0;
break;
default:
break;
}
@ -863,6 +881,10 @@ gdk_event_get_time (const GdkEvent *event)
case GDK_TOUCH_END:
case GDK_TOUCH_CANCEL:
return event->touch.time;
case GDK_TOUCHPAD_SWIPE:
return event->touchpad_swipe.time;
case GDK_TOUCHPAD_PINCH:
return event->touchpad_pinch.time;
case GDK_SCROLL:
return event->scroll.time;
case GDK_KEY_PRESS:
@ -946,6 +968,12 @@ gdk_event_get_state (const GdkEvent *event,
case GDK_TOUCH_CANCEL:
*state = event->touch.state;
return TRUE;
case GDK_TOUCHPAD_SWIPE:
*state = event->touchpad_swipe.state;
return TRUE;
case GDK_TOUCHPAD_PINCH:
*state = event->touchpad_pinch.state;
return TRUE;
case GDK_SCROLL:
*state = event->scroll.state;
return TRUE;
@ -1046,6 +1074,14 @@ gdk_event_get_coords (const GdkEvent *event,
x = event->motion.x;
y = event->motion.y;
break;
case GDK_TOUCHPAD_SWIPE:
x = event->touchpad_swipe.x;
y = event->touchpad_swipe.y;
break;
case GDK_TOUCHPAD_PINCH:
x = event->touchpad_pinch.x;
y = event->touchpad_pinch.y;
break;
default:
fetched = FALSE;
break;
@ -1117,6 +1153,14 @@ gdk_event_get_root_coords (const GdkEvent *event,
x = event->dnd.x_root;
y = event->dnd.y_root;
break;
case GDK_TOUCHPAD_SWIPE:
x = event->touchpad_swipe.x_root;
y = event->touchpad_swipe.y_root;
break;
case GDK_TOUCHPAD_PINCH:
x = event->touchpad_pinch.x_root;
y = event->touchpad_pinch.y_root;
break;
default:
fetched = FALSE;
break;