[mutter] backend: Only show cursor when showing stage if pointer is present
- From: Marge Bot <marge-bot src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [mutter] backend: Only show cursor when showing stage if pointer is present
- Date: Fri, 12 Mar 2021 15:43:45 +0000 (UTC)
commit c8089f07a33ea22fdc6d8b57f40e8edc6e9927b2
Author: Jonas Ã…dahl <jadahl gmail com>
Date: Thu Jan 28 15:08:15 2021 +0100
backend: Only show cursor when showing stage if pointer is present
This avoids showing the cursor when initially there is no pointer
device, nor touchscreen device.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1698>
src/backends/meta-backend.c | 23 ++++++++++++++++++++++-
1 file changed, 22 insertions(+), 1 deletion(-)
---
diff --git a/src/backends/meta-backend.c b/src/backends/meta-backend.c
index e0249160db..4eb0a8e7de 100644
--- a/src/backends/meta-backend.c
+++ b/src/backends/meta-backend.c
@@ -456,6 +456,9 @@ on_device_added (ClutterSeat *seat,
if (device_type == CLUTTER_TOUCHSCREEN_DEVICE)
meta_cursor_tracker_set_pointer_visible (priv->cursor_tracker, FALSE);
+ else if (device_type == CLUTTER_POINTER_DEVICE &&
+ !clutter_seat_has_touchscreen (seat))
+ meta_cursor_tracker_set_pointer_visible (priv->cursor_tracker, TRUE);
if (device_type == CLUTTER_TOUCHSCREEN_DEVICE ||
device_type == CLUTTER_TABLET_DEVICE ||
@@ -566,8 +569,26 @@ static void
on_stage_shown_cb (MetaBackend *backend)
{
MetaBackendPrivate *priv = meta_backend_get_instance_private (backend);
+ ClutterSeat *seat = clutter_backend_get_default_seat (priv->clutter_backend);
+ g_autoptr (GList) devices = NULL;
+ const GList *l;
+
+ devices = clutter_seat_list_devices (seat);
+ for (l = devices; l; l = l->next)
+ {
+ ClutterInputDevice *device = l->data;
+
+ if (clutter_input_device_get_device_mode (device) ==
+ CLUTTER_INPUT_MODE_LOGICAL)
+ continue;
- meta_cursor_tracker_set_pointer_visible (priv->cursor_tracker, TRUE);
+ if (clutter_input_device_get_device_type (device) !=
+ CLUTTER_POINTER_DEVICE)
+ continue;
+
+ meta_cursor_tracker_set_pointer_visible (priv->cursor_tracker, TRUE);
+ break;
+ }
}
static void
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]