[mutter/wip/tablet-protocol: 8/10] wayland: Add methods to update the position of different tools' cursors



commit 4799e89071b2b9fd7fd63c7e721d82d0a73c4d6f
Author: Carlos Garnacho <carlosg gnome org>
Date:   Wed Oct 28 13:49:19 2015 +0100

    wayland: Add methods to update the position of different tools' cursors

 src/wayland/meta-wayland-tablet-manager.c |   28 ++++++++++++++++++++++++++++
 src/wayland/meta-wayland-tablet-manager.h |    3 +++
 src/wayland/meta-wayland-tablet-tool.c    |    9 +++++++++
 src/wayland/meta-wayland-tablet-tool.h    |    5 +++++
 4 files changed, 45 insertions(+), 0 deletions(-)
---
diff --git a/src/wayland/meta-wayland-tablet-manager.c b/src/wayland/meta-wayland-tablet-manager.c
index 4e73ea2..ce66053 100644
--- a/src/wayland/meta-wayland-tablet-manager.c
+++ b/src/wayland/meta-wayland-tablet-manager.c
@@ -33,6 +33,7 @@
 #include "meta-wayland-private.h"
 #include "meta-wayland-tablet-manager.h"
 #include "meta-wayland-tablet-seat.h"
+#include "meta-wayland-tablet-tool.h"
 
 static void
 unbind_resource (struct wl_resource *resource)
@@ -237,3 +238,30 @@ meta_wayland_tablet_manager_ensure_seat (MetaWaylandTabletManager *manager,
 
   return tablet_seat;
 }
+
+void
+meta_wayland_tablet_manager_update_cursor_position (MetaWaylandTabletManager *manager,
+                                                    const ClutterEvent       *event)
+{
+  MetaWaylandTabletSeat *tablet_seat = NULL;
+  MetaWaylandTabletTool *tool = NULL;
+  ClutterInputDeviceTool *device_tool;
+  ClutterInputDevice *device;
+
+  device = clutter_event_get_source_device (event);
+  device_tool = clutter_event_get_device_tool (event);
+
+  if (device)
+    tablet_seat = meta_wayland_tablet_manager_lookup_seat (manager, device);
+
+  if (tablet_seat && device_tool)
+    tool = meta_wayland_tablet_seat_lookup_tool (tablet_seat, device_tool);
+
+  if (tool)
+    {
+      gfloat new_x, new_y;
+
+      clutter_event_get_coords (event, &new_x, &new_y);
+      meta_wayland_tablet_tool_set_cursor_position (tool, new_x, new_y);
+    }
+}
diff --git a/src/wayland/meta-wayland-tablet-manager.h b/src/wayland/meta-wayland-tablet-manager.h
index b39d3a9..0e01039 100644
--- a/src/wayland/meta-wayland-tablet-manager.h
+++ b/src/wayland/meta-wayland-tablet-manager.h
@@ -51,4 +51,7 @@ MetaWaylandTabletSeat *
          meta_wayland_tablet_manager_ensure_seat    (MetaWaylandTabletManager *manager,
                                                      MetaWaylandSeat          *seat);
 
+void     meta_wayland_tablet_manager_update_cursor_position (MetaWaylandTabletManager *manager,
+                                                             const ClutterEvent       *event);
+
 #endif /* META_WAYLAND_TABLET_MANAGER_H */
diff --git a/src/wayland/meta-wayland-tablet-tool.c b/src/wayland/meta-wayland-tablet-tool.c
index eda53ca..723a37d 100644
--- a/src/wayland/meta-wayland-tablet-tool.c
+++ b/src/wayland/meta-wayland-tablet-tool.c
@@ -827,3 +827,12 @@ meta_wayland_tablet_tool_handle_event (MetaWaylandTabletTool *tool,
 
   return CLUTTER_EVENT_STOP;
 }
+
+void
+meta_wayland_tablet_tool_set_cursor_position (MetaWaylandTabletTool *tool,
+                                              int                    new_x,
+                                              int                    new_y)
+{
+  if (tool->cursor_renderer)
+    meta_cursor_renderer_set_position (tool->cursor_renderer, new_x, new_y);
+}
diff --git a/src/wayland/meta-wayland-tablet-tool.h b/src/wayland/meta-wayland-tablet-tool.h
index da680e4..89ca2a6 100644
--- a/src/wayland/meta-wayland-tablet-tool.h
+++ b/src/wayland/meta-wayland-tablet-tool.h
@@ -73,4 +73,9 @@ void     meta_wayland_tablet_tool_update              (MetaWaylandTabletTool  *t
 gboolean meta_wayland_tablet_tool_handle_event        (MetaWaylandTabletTool  *tool,
                                                        const ClutterEvent     *event);
 
+void     meta_wayland_tablet_tool_set_cursor_position (MetaWaylandTabletTool  *tool,
+                                                       int                     new_x,
+                                                       int                     new_y);
+
+
 #endif /* META_WAYLAND_TABLET_TOOL_H */


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]