[mutter/wip/tablet-protocol-v2: 5/8] wayland: Wire up pad device event management
- From: Carlos Garnacho <carlosg src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [mutter/wip/tablet-protocol-v2: 5/8] wayland: Wire up pad device event management
- Date: Wed, 11 May 2016 14:12:55 +0000 (UTC)
commit 1bea43a940b728729f2a9eb6204c7f18445b2269
Author: Carlos Garnacho <carlosg gnome org>
Date: Tue May 10 17:28:29 2016 +0200
wayland: Wire up pad device event management
The tablet manager will now lookup the correct MetaWaylandTabletSeat,
and forward the events through it.
src/wayland/meta-wayland-tablet-manager.c | 14 ++++++++++-
src/wayland/meta-wayland-tablet-seat.c | 34 ++++++++++++++++++++++------
src/wayland/meta-wayland-tablet-seat.h | 3 ++
3 files changed, 41 insertions(+), 10 deletions(-)
---
diff --git a/src/wayland/meta-wayland-tablet-manager.c b/src/wayland/meta-wayland-tablet-manager.c
index 722a721..bd2e2e5 100644
--- a/src/wayland/meta-wayland-tablet-manager.c
+++ b/src/wayland/meta-wayland-tablet-manager.c
@@ -54,7 +54,8 @@ is_tablet_device (ClutterInputDevice *device)
return (device_type == CLUTTER_TABLET_DEVICE ||
device_type == CLUTTER_PEN_DEVICE ||
device_type == CLUTTER_ERASER_DEVICE ||
- device_type == CLUTTER_CURSOR_DEVICE);
+ device_type == CLUTTER_CURSOR_DEVICE ||
+ device_type == CLUTTER_PAD_DEVICE);
}
static void
@@ -155,7 +156,8 @@ meta_wayland_tablet_manager_lookup_seat (MetaWaylandTabletManager *manager,
while (g_hash_table_iter_next (&iter, (gpointer*) &seat, (gpointer*) &tablet_seat))
{
- if (meta_wayland_tablet_seat_lookup_tablet (tablet_seat, device))
+ if (meta_wayland_tablet_seat_lookup_tablet (tablet_seat, device) ||
+ meta_wayland_tablet_seat_lookup_pad (tablet_seat, device))
return tablet_seat;
}
@@ -190,6 +192,10 @@ meta_wayland_tablet_manager_update (MetaWaylandTabletManager *manager,
case CLUTTER_BUTTON_PRESS:
case CLUTTER_BUTTON_RELEASE:
case CLUTTER_MOTION:
+ case CLUTTER_PAD_BUTTON_PRESS:
+ case CLUTTER_PAD_BUTTON_RELEASE:
+ case CLUTTER_PAD_RING:
+ case CLUTTER_PAD_STRIP:
meta_wayland_tablet_seat_update (tablet_seat, event);
break;
default:
@@ -216,6 +222,10 @@ meta_wayland_tablet_manager_handle_event (MetaWaylandTabletManager *manager,
case CLUTTER_BUTTON_PRESS:
case CLUTTER_BUTTON_RELEASE:
case CLUTTER_MOTION:
+ case CLUTTER_PAD_BUTTON_PRESS:
+ case CLUTTER_PAD_BUTTON_RELEASE:
+ case CLUTTER_PAD_RING:
+ case CLUTTER_PAD_STRIP:
return meta_wayland_tablet_seat_handle_event (tablet_seat, event);
default:
return CLUTTER_EVENT_PROPAGATE;
diff --git a/src/wayland/meta-wayland-tablet-seat.c b/src/wayland/meta-wayland-tablet-seat.c
index 0ed4dc4..9d5fbd6 100644
--- a/src/wayland/meta-wayland-tablet-seat.c
+++ b/src/wayland/meta-wayland-tablet-seat.c
@@ -330,6 +330,13 @@ meta_wayland_tablet_seat_lookup_tool (MetaWaylandTabletSeat *tablet_seat,
return g_hash_table_lookup (tablet_seat->tools, tool);
}
+MetaWaylandTabletPad *
+meta_wayland_tablet_seat_lookup_pad (MetaWaylandTabletSeat *tablet_seat,
+ ClutterInputDevice *device)
+{
+ return g_hash_table_lookup (tablet_seat->pads, device);
+}
+
static MetaWaylandTabletTool *
meta_wayland_tablet_seat_ensure_tool (MetaWaylandTabletSeat *tablet_seat,
ClutterInputDevice *device,
@@ -385,14 +392,7 @@ meta_wayland_tablet_seat_handle_event (MetaWaylandTabletSeat *tablet_seat,
{
ClutterInputDeviceTool *device_tool;
MetaWaylandTabletTool *tool = NULL;
-
- device_tool = clutter_event_get_device_tool (event);
-
- if (device_tool)
- tool = g_hash_table_lookup (tablet_seat->tools, device_tool);
-
- if (!tool)
- return CLUTTER_EVENT_PROPAGATE;
+ MetaWaylandTabletPad *pad = NULL;
switch (event->type)
{
@@ -401,8 +401,26 @@ meta_wayland_tablet_seat_handle_event (MetaWaylandTabletSeat *tablet_seat,
case CLUTTER_BUTTON_PRESS:
case CLUTTER_BUTTON_RELEASE:
case CLUTTER_MOTION:
+ device_tool = clutter_event_get_device_tool (event);
+
+ if (device_tool)
+ tool = g_hash_table_lookup (tablet_seat->tools, device_tool);
+
+ if (!tool)
+ return CLUTTER_EVENT_PROPAGATE;
+
meta_wayland_tablet_tool_handle_event (tool, event);
return CLUTTER_EVENT_PROPAGATE;
+ case CLUTTER_PAD_BUTTON_PRESS:
+ case CLUTTER_PAD_BUTTON_RELEASE:
+ case CLUTTER_PAD_RING:
+ case CLUTTER_PAD_STRIP:
+ pad = g_hash_table_lookup (tablet_seat->pads,
+ clutter_event_get_source_device (event));
+ if (!pad)
+ return CLUTTER_EVENT_PROPAGATE;
+
+ return meta_wayland_tablet_pad_handle_event (pad, event);
default:
return CLUTTER_EVENT_STOP;
}
diff --git a/src/wayland/meta-wayland-tablet-seat.h b/src/wayland/meta-wayland-tablet-seat.h
index 6dac9b0..fc3be0f 100644
--- a/src/wayland/meta-wayland-tablet-seat.h
+++ b/src/wayland/meta-wayland-tablet-seat.h
@@ -55,6 +55,9 @@ MetaWaylandTablet *meta_wayland_tablet_seat_lookup_tablet (MetaWayland
MetaWaylandTabletTool *meta_wayland_tablet_seat_lookup_tool (MetaWaylandTabletSeat *tablet_seat,
ClutterInputDeviceTool *tool);
+MetaWaylandTabletPad *meta_wayland_tablet_seat_lookup_pad (MetaWaylandTabletSeat *tablet_seat,
+ ClutterInputDevice *device);
+
void meta_wayland_tablet_seat_update (MetaWaylandTabletSeat *tablet_seat,
const ClutterEvent *event);
gboolean meta_wayland_tablet_seat_handle_event (MetaWaylandTabletSeat *tablet_seat,
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]