diff options
author | Carlos Garnacho <carlosg@gnome.org> | 2016-06-22 18:56:33 +0200 |
---|---|---|
committer | Carlos Garnacho <carlosg@gnome.org> | 2016-07-20 19:26:31 +0200 |
commit | 982802d66cfc4772ae74976e21e20c376fd7c58b (patch) | |
tree | 3cdf0b58ccbcff737cfa8c5c3d631b32adae4af9 | |
parent | 0dcca308e716bf0d003c897bd207bb9b784b8dff (diff) | |
download | mutter-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.c | 43 |
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: |