[mutter] wayland: Hook MetaWaylandTabletPad to pad button actions management



commit 7bba20e536ea52b4c54351f3ae4f7f01dc33119d
Author: Carlos Garnacho <carlosg gnome org>
Date:   Wed Jun 22 18:56:33 2016 +0200

    wayland: Hook MetaWaylandTabletPad to pad button actions management
    
    These are handled by the MetaInputSettings, so hook the events emitted
    to it.

 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 d62e12e..2f50c52 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"
@@ -233,6 +234,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_backend_get_input_settings (meta_get_backend ());
+
+  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_backend_get_input_settings (meta_get_backend ());
+
+  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)
@@ -251,6 +290,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;
 
@@ -406,6 +447,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:


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