diff options
author | Alexander Larsson <alexl@redhat.com> | 2013-11-12 16:44:30 +0100 |
---|---|---|
committer | Alexander Larsson <alexl@redhat.com> | 2013-11-12 16:45:14 +0100 |
commit | 4e8fa558270adc644d3f1c158e176c5516395848 (patch) | |
tree | 2cea2d398a70652bc5f0661db09065b08de6b33a /gdk/broadway | |
parent | 9223e3c25a7a4c3aabc904b0e81573bd61d62d1a (diff) | |
download | gtk+-4e8fa558270adc644d3f1c158e176c5516395848.tar.gz |
broadway: Support window resize/drag via touch
Diffstat (limited to 'gdk/broadway')
-rw-r--r-- | gdk/broadway/gdkeventsource.c | 4 | ||||
-rw-r--r-- | gdk/broadway/gdkwindow-broadway.c | 28 |
2 files changed, 32 insertions, 0 deletions
diff --git a/gdk/broadway/gdkeventsource.c b/gdk/broadway/gdkeventsource.c index a7d3c6e3c5..fe5dad6527 100644 --- a/gdk/broadway/gdkeventsource.c +++ b/gdk/broadway/gdkeventsource.c @@ -241,6 +241,10 @@ _gdk_broadway_events_got_input (BroadwayInputMsg *message) display_broadway->touch_sequence_down == message->touch.sequence_id) display_broadway->touch_sequence_down = 0; + if (event_type != GDK_TOUCH_BEGIN && + is_first_down && _gdk_broadway_moveresize_handle_event (display, message)) + break; + event = gdk_event_new (event_type); event->touch.window = g_object_ref (window); event->touch.sequence = GUINT_TO_POINTER(message->touch.sequence_id); diff --git a/gdk/broadway/gdkwindow-broadway.c b/gdk/broadway/gdkwindow-broadway.c index 5a67bb15c8..bfcba8a9ea 100644 --- a/gdk/broadway/gdkwindow-broadway.c +++ b/gdk/broadway/gdkwindow-broadway.c @@ -1197,6 +1197,34 @@ _gdk_broadway_moveresize_handle_event (GdkDisplay *display, switch (event->base.type) { + case BROADWAY_EVENT_TOUCH: + if (event->touch.touch_type == 2) /* END */ + { + update_pos (mv_resize, + event->touch.root_x, + event->touch.root_y); + + finish_drag (mv_resize); + } + else if (event->touch.touch_type == 1) /* UPDATE */ + { + if (mv_resize->moveresize_window->resize_count > 0) + { + if (mv_resize->moveresize_pending_event) + *mv_resize->moveresize_pending_event = *event; + else + mv_resize->moveresize_pending_event = + g_memdup (event, sizeof (BroadwayInputMsg)); + + break; + } + update_pos (mv_resize, + event->touch.root_x, + event->touch.root_y); + } + + break; + case BROADWAY_EVENT_POINTER_MOVE: if (mv_resize->moveresize_window->resize_count > 0) { |