---
 shared/cairo-util.h |  3 +++
 shared/frame.c      | 24 ++++++++++++++++++++++++
 2 files changed, 27 insertions(+)

diff --git a/shared/cairo-util.h b/shared/cairo-util.h
index 4493b0d..7aebb65 100644
--- a/shared/cairo-util.h
+++ b/shared/cairo-util.h
@@ -211,6 +211,9 @@ void
 frame_touch_up(struct frame *frame, void *data, int32_t id);
 
 void
+frame_touch_motion(struct frame *frame, void *data, int32_t id, int x, int y);
+
+void
 frame_repaint(struct frame *frame, cairo_t *cr);
 
 #endif
diff --git a/shared/frame.c b/shared/frame.c
index 35e6b65..df51eca 100644
--- a/shared/frame.c
+++ b/shared/frame.c
@@ -837,6 +837,30 @@ frame_touch_up(struct frame *frame, void *data, int32_t id)
 }
 
 void
+frame_touch_motion(struct frame *frame, void *data, int32_t id, int x, int y)
+{
+       struct frame_touch *touch = frame_touch_get(frame, data);
+       struct frame_button *button = frame_find_button(frame, x, y);
+
+       if (id > 0 || !touch)
+               return;
+
+       touch->x = x;
+       touch->y = y;
+
+       if (touch->button == button)
+               return ;
+
+       if (touch->button)
+               frame_button_release(touch->button);
+
+       touch->button = button;
+
+       if (touch->button)
+               frame_button_press(touch->button);
+}
+
+void
 frame_repaint(struct frame *frame, cairo_t *cr)
 {
        struct frame_button *button;
-- 
1.9.2


_______________________________________________
wayland-devel mailing list
wayland-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/wayland-devel

Reply via email to