summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarlos Garnacho <carlosg@gnome.org>2020-10-28 19:41:40 +0100
committerMarge Bot <marge-bot@gnome.org>2020-11-27 15:14:33 +0000
commitefc1592d4dba446635a002ef6bc525937d1434f7 (patch)
treeea901ccec83bf7f4110a6edb10d1cf15612a04b1
parentfb2440a1cf50c005071b6f901066a8c93ce2763e (diff)
downloadmutter-efc1592d4dba446635a002ef6bc525937d1434f7.tar.gz
backends: Make pointer cursor invisible until the stage is shown
We are able to show the cursor before that, it doesn't mean we should. Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1403>
-rw-r--r--src/backends/meta-backend.c11
-rw-r--r--src/backends/meta-cursor-tracker.c2
2 files changed, 12 insertions, 1 deletions
diff --git a/src/backends/meta-backend.c b/src/backends/meta-backend.c
index fb05e078c..4d213b416 100644
--- a/src/backends/meta-backend.c
+++ b/src/backends/meta-backend.c
@@ -564,6 +564,14 @@ input_mapper_device_aspect_ratio_cb (MetaInputMapper *mapper,
}
static void
+on_stage_shown_cb (MetaBackend *backend)
+{
+ MetaBackendPrivate *priv = meta_backend_get_instance_private (backend);
+
+ meta_cursor_tracker_set_pointer_visible (priv->cursor_tracker, TRUE);
+}
+
+static void
meta_backend_real_post_init (MetaBackend *backend)
{
MetaBackendPrivate *priv = meta_backend_get_instance_private (backend);
@@ -572,6 +580,9 @@ meta_backend_real_post_init (MetaBackend *backend)
priv->stage = meta_stage_new (backend);
clutter_actor_realize (priv->stage);
META_BACKEND_GET_CLASS (backend)->select_stage_events (backend);
+ g_signal_connect_object (priv->stage, "show",
+ G_CALLBACK (on_stage_shown_cb), backend,
+ G_CONNECT_SWAPPED);
meta_monitor_manager_setup (priv->monitor_manager);
diff --git a/src/backends/meta-cursor-tracker.c b/src/backends/meta-cursor-tracker.c
index 6b3d2289a..d2bd22606 100644
--- a/src/backends/meta-cursor-tracker.c
+++ b/src/backends/meta-cursor-tracker.c
@@ -196,7 +196,7 @@ meta_cursor_tracker_init (MetaCursorTracker *tracker)
MetaCursorTrackerPrivate *priv =
meta_cursor_tracker_get_instance_private (tracker);
- priv->is_showing = TRUE;
+ priv->is_showing = FALSE;
priv->x = -1.0;
priv->y = -1.0;
}