[mutter/wip/carlosg/there-can-be-only-one: 8/9] backends: Split handling of pointer visibility on events
- From: Carlos Garnacho <carlosg src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [mutter/wip/carlosg/there-can-be-only-one: 8/9] backends: Split handling of pointer visibility on events
- Date: Thu, 13 Jan 2022 14:21:29 +0000 (UTC)
commit 765f7326b6b48901859c7600ae91a1f8ee58591a
Author: Carlos Garnacho <carlosg gnome org>
Date: Thu Jan 13 14:15:05 2022 +0100
backends: Split handling of pointer visibility on events
This was done as part of the "last updated device" changes, separate
that as we want different checks and policies.
src/backends/meta-backend.c | 42 ++++++++++++++++++++++++++----------------
1 file changed, 26 insertions(+), 16 deletions(-)
---
diff --git a/src/backends/meta-backend.c b/src/backends/meta-backend.c
index 81eaf99b95..c86aa9ed06 100644
--- a/src/backends/meta-backend.c
+++ b/src/backends/meta-backend.c
@@ -378,27 +378,11 @@ static gboolean
update_last_device (MetaBackend *backend)
{
MetaBackendPrivate *priv = meta_backend_get_instance_private (backend);
- MetaCursorTracker *cursor_tracker = priv->cursor_tracker;
- ClutterInputDeviceType device_type;
priv->device_update_idle_id = 0;
- device_type = clutter_input_device_get_device_type (priv->current_device);
-
g_signal_emit (backend, signals[LAST_DEVICE_CHANGED], 0,
priv->current_device);
- switch (device_type)
- {
- case CLUTTER_KEYBOARD_DEVICE:
- break;
- case CLUTTER_TOUCHSCREEN_DEVICE:
- meta_cursor_tracker_set_pointer_visible (cursor_tracker, FALSE);
- break;
- default:
- meta_cursor_tracker_set_pointer_visible (cursor_tracker, TRUE);
- break;
- }
-
return G_SOURCE_REMOVE;
}
@@ -1031,6 +1015,31 @@ update_last_device_from_event (MetaBackend *backend,
meta_backend_update_last_device (backend, source);
}
+static void
+update_pointer_visibility_from_event (MetaBackend *backend,
+ ClutterEvent *event)
+{
+ MetaBackendPrivate *priv = meta_backend_get_instance_private (backend);
+ MetaCursorTracker *cursor_tracker = priv->cursor_tracker;
+ ClutterInputDevice *device;
+ ClutterInputDeviceType device_type;
+
+ device = clutter_event_get_source_device (event);
+ device_type = clutter_input_device_get_device_type (device);
+
+ switch (device_type)
+ {
+ case CLUTTER_KEYBOARD_DEVICE:
+ break;
+ case CLUTTER_TOUCHSCREEN_DEVICE:
+ meta_cursor_tracker_set_pointer_visible (cursor_tracker, FALSE);
+ break;
+ default:
+ meta_cursor_tracker_set_pointer_visible (cursor_tracker, TRUE);
+ break;
+ }
+}
+
/* Mutter is responsible for pulling events off the X queue, so Clutter
* doesn't need (and shouldn't) run its normal event source which polls
* the X fd, but we do have to deal with dispatching events that accumulate
@@ -1071,6 +1080,7 @@ clutter_source_dispatch (GSource *source,
CLUTTER_STAGE (meta_backend_get_stage (backend_source->backend));
clutter_do_event (event);
update_last_device_from_event (backend_source->backend, event);
+ update_pointer_visibility_from_event (backend_source->backend, event);
clutter_event_free (event);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]