summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarlos Garnacho <carlosg@gnome.org>2016-06-22 18:56:33 +0200
committerCarlos Garnacho <carlosg@gnome.org>2016-07-20 19:26:31 +0200
commit982802d66cfc4772ae74976e21e20c376fd7c58b (patch)
tree3cdf0b58ccbcff737cfa8c5c3d631b32adae4af9
parent0dcca308e716bf0d003c897bd207bb9b784b8dff (diff)
downloadmutter-982802d66cfc4772ae74976e21e20c376fd7c58b.tar.gz
wayland: Hook MetaWaylandTabletPad to pad button actions management
These are handled by the MetaInputSettings, so hook the events emitted to it.
-rw-r--r--src/wayland/meta-wayland-tablet-pad.c43
1 files changed, 43 insertions, 0 deletions
diff --git a/src/wayland/meta-wayland-tablet-pad.c b/src/wayland/meta-wayland-tablet-pad.c
index a5737259e..b4bc1298a 100644
--- a/src/wayland/meta-wayland-tablet-pad.c
+++ b/src/wayland/meta-wayland-tablet-pad.c
@@ -29,6 +29,7 @@
#include <wayland-server.h>
#include "tablet-unstable-v2-server-protocol.h"
+#include "backends/meta-input-settings-private.h"
#include "meta-surface-actor-wayland.h"
#include "meta-wayland-private.h"
@@ -235,6 +236,44 @@ handle_pad_button_event (MetaWaylandTabletPad *pad,
return TRUE;
}
+static void
+meta_wayland_tablet_pad_update_action (MetaWaylandTabletPad *pad,
+ const ClutterEvent *event)
+{
+ MetaInputSettings *input_settings;
+ ClutterInputDevice *device;
+ guint button;
+
+ button = event->pad_button.button;
+ device = clutter_event_get_source_device (event);
+ input_settings = meta_input_settings_get ();
+
+ if (!input_settings)
+ return;
+
+ meta_input_settings_handle_pad_button (input_settings, device,
+ event->type == CLUTTER_PAD_BUTTON_PRESS,
+ button);
+}
+
+static gboolean
+meta_wayland_tablet_pad_handle_event_action (MetaWaylandTabletPad *pad,
+ const ClutterEvent *event)
+{
+ MetaInputSettings *input_settings;
+ ClutterInputDevice *device;
+
+ device = clutter_event_get_source_device (event);
+ input_settings = meta_input_settings_get ();
+
+ if (input_settings &&
+ meta_input_settings_is_pad_button_grabbed (input_settings, device,
+ event->pad_button.button))
+ return TRUE;
+
+ return FALSE;
+}
+
gboolean
meta_wayland_tablet_pad_handle_event (MetaWaylandTabletPad *pad,
const ClutterEvent *event)
@@ -253,6 +292,8 @@ meta_wayland_tablet_pad_handle_event (MetaWaylandTabletPad *pad,
if (group)
handled |= meta_wayland_tablet_pad_group_handle_event (group, event);
+ handled |= meta_wayland_tablet_pad_handle_event_action (pad, event);
+
if (handled)
return TRUE;
@@ -386,6 +427,8 @@ meta_wayland_tablet_pad_update (MetaWaylandTabletPad *pad,
{
case CLUTTER_PAD_BUTTON_PRESS:
case CLUTTER_PAD_BUTTON_RELEASE:
+ meta_wayland_tablet_pad_update_action (pad, event);
+ break;
case CLUTTER_PAD_RING:
case CLUTTER_PAD_STRIP:
default: