[mutter] clutter: Add function to find out the number of modes for a pad group
- From: Carlos Garnacho <carlosg src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [mutter] clutter: Add function to find out the number of modes for a pad group
- Date: Fri, 10 Feb 2017 22:51:36 +0000 (UTC)
commit d6fc41b73e80fe7b8320254650a3bc058fa955be
Author: Carlos Garnacho <carlosg gnome org>
Date: Wed Dec 28 11:44:27 2016 +0100
clutter: Add function to find out the number of modes for a pad group
This is obtained in backend-dependent ways in the upper layers, seems
better to let ClutterInputDevice provide this information.
https://bugzilla.gnome.org/show_bug.cgi?id=771098
clutter/clutter/clutter-device-manager-private.h | 2 ++
clutter/clutter/clutter-input-device.c | 19 +++++++++++++++++++
clutter/clutter/clutter-input-device.h | 4 ++++
clutter/clutter/evdev/clutter-input-device-evdev.c | 14 ++++++++++++++
4 files changed, 39 insertions(+), 0 deletions(-)
---
diff --git a/clutter/clutter/clutter-device-manager-private.h
b/clutter/clutter/clutter-device-manager-private.h
index a554467..37b2eec 100644
--- a/clutter/clutter/clutter-device-manager-private.h
+++ b/clutter/clutter/clutter-device-manager-private.h
@@ -158,6 +158,8 @@ struct _ClutterInputDeviceClass
gboolean (* is_mode_switch_button) (ClutterInputDevice *device,
guint group,
guint button);
+ gint (* get_group_n_modes) (ClutterInputDevice *device,
+ gint group);
};
/* Platform-dependent interface */
diff --git a/clutter/clutter/clutter-input-device.c b/clutter/clutter/clutter-input-device.c
index 89aa09e..686e5a8 100644
--- a/clutter/clutter/clutter-input-device.c
+++ b/clutter/clutter/clutter-input-device.c
@@ -2175,6 +2175,25 @@ clutter_input_device_get_n_mode_groups (ClutterInputDevice *device)
return device->n_mode_groups;
}
+gint
+clutter_input_device_get_group_n_modes (ClutterInputDevice *device,
+ gint group)
+{
+ ClutterInputDeviceClass *device_class;
+
+ g_return_val_if_fail (CLUTTER_IS_INPUT_DEVICE (device), 0);
+ g_return_val_if_fail (clutter_input_device_get_device_type (device) ==
+ CLUTTER_PAD_DEVICE, 0);
+ g_return_val_if_fail (group >= 0, 0);
+
+ device_class = CLUTTER_INPUT_DEVICE_GET_CLASS (device);
+
+ if (device_class->get_group_n_modes)
+ return device_class->get_group_n_modes (device, group);
+
+ return 0;
+}
+
gboolean
clutter_input_device_is_mode_switch_button (ClutterInputDevice *device,
guint group,
diff --git a/clutter/clutter/clutter-input-device.h b/clutter/clutter/clutter-input-device.h
index f9b3edc..f80a48c 100644
--- a/clutter/clutter/clutter-input-device.h
+++ b/clutter/clutter/clutter-input-device.h
@@ -148,6 +148,10 @@ CLUTTER_AVAILABLE_IN_ALL
gint clutter_input_device_get_n_mode_groups (ClutterInputDevice *device);
CLUTTER_AVAILABLE_IN_ALL
+gint clutter_input_device_get_group_n_modes (ClutterInputDevice *device,
+ gint group);
+
+CLUTTER_AVAILABLE_IN_ALL
gboolean clutter_input_device_is_mode_switch_button (ClutterInputDevice *device,
guint group,
guint button);
diff --git a/clutter/clutter/evdev/clutter-input-device-evdev.c
b/clutter/clutter/evdev/clutter-input-device-evdev.c
index 9ad8935..0dc578d 100644
--- a/clutter/clutter/evdev/clutter-input-device-evdev.c
+++ b/clutter/clutter/evdev/clutter-input-device-evdev.c
@@ -180,6 +180,19 @@ clutter_input_device_evdev_is_mode_switch_button (ClutterInputDevice *device,
return libinput_tablet_pad_mode_group_button_is_toggle (mode_group, button) != 0;
}
+static gint
+clutter_input_device_evdev_get_group_n_modes (ClutterInputDevice *device,
+ gint group)
+{
+ struct libinput_device *libinput_device;
+ struct libinput_tablet_pad_mode_group *mode_group;
+
+ libinput_device = clutter_evdev_input_device_get_libinput_device (device);
+ mode_group = libinput_device_tablet_pad_get_mode_group (libinput_device, group);
+
+ return libinput_tablet_pad_mode_group_get_num_modes (mode_group);
+}
+
static void
clutter_input_device_evdev_class_init (ClutterInputDeviceEvdevClass *klass)
{
@@ -192,6 +205,7 @@ clutter_input_device_evdev_class_init (ClutterInputDeviceEvdevClass *klass)
klass->keycode_to_evdev = clutter_input_device_evdev_keycode_to_evdev;
klass->update_from_tool = clutter_input_device_evdev_update_from_tool;
klass->is_mode_switch_button = clutter_input_device_evdev_is_mode_switch_button;
+ klass->get_group_n_modes = clutter_input_device_evdev_get_group_n_modes;
obj_props[PROP_DEVICE_MATRIX] =
g_param_spec_boxed ("device-matrix",
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]