summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMario Sanchez Prada <mario@endlessm.com>2018-04-24 21:32:24 +0100
committerMario Sanchez Prada <mario@endlessm.com>2018-04-24 21:58:38 +0100
commit3bbff94878ee72c5c945aad289a03755ea591c96 (patch)
tree10df66f34721691874b21b3266af6ce70c431206
parent4ef886f51e689695028c60ad55655e5fc3883ed3 (diff)
downloadmutter-3bbff94878ee72c5c945aad289a03755ea591c96.tar.gz
backend: Don't center the pointers on monitor changes
As a follow up to the patch from a95cbd0a, we need to make sure that the pointer is out of the way as well when monitors changed, since that's the event that will prevail in some cases. Besides, this is also consistent with what the code before a95cbd0a was, which initialized the pointer position in the same way both in this case and in the real_post_init() function. Closes: https://gitlab.gnome.org/GNOME/gnome-shell/issues/157
-rw-r--r--src/backends/meta-backend.c23
1 files changed, 7 insertions, 16 deletions
diff --git a/src/backends/meta-backend.c b/src/backends/meta-backend.c
index a5d3c9a6c..4a8c3bc4e 100644
--- a/src/backends/meta-backend.c
+++ b/src/backends/meta-backend.c
@@ -170,7 +170,7 @@ meta_backend_sync_screen_size (MetaBackend *backend)
}
static void
-center_pointer (MetaBackend *backend)
+reset_pointer_position (MetaBackend *backend)
{
MetaBackendPrivate *priv = meta_backend_get_instance_private (backend);
MetaMonitorManager *monitor_manager = priv->monitor_manager;
@@ -179,9 +179,11 @@ center_pointer (MetaBackend *backend)
primary =
meta_monitor_manager_get_primary_logical_monitor (monitor_manager);
+ /* Move the pointer out of the way to avoid hovering over reactive
+ * elements (e.g. users list at login) causing undesired behaviour. */
meta_backend_warp_pointer (backend,
- primary->rect.x + primary->rect.width / 2,
- primary->rect.y + primary->rect.height / 2);
+ primary->rect.x + primary->rect.width * 0.9,
+ primary->rect.y + primary->rect.height * 0.9);
}
void
@@ -204,7 +206,7 @@ meta_backend_monitors_changed (MetaBackend *backend)
!priv->is_pointer_position_initialized) &&
!meta_monitor_manager_is_headless (monitor_manager))
{
- center_pointer (backend);
+ reset_pointer_position (backend);
priv->is_pointer_position_initialized = TRUE;
}
}
@@ -479,18 +481,7 @@ meta_backend_real_post_init (MetaBackend *backend)
if (!meta_monitor_manager_is_headless (priv->monitor_manager))
{
- MetaMonitorManager *monitor_manager = priv->monitor_manager;
- MetaLogicalMonitor *primary;
-
- primary =
- meta_monitor_manager_get_primary_logical_monitor (monitor_manager);
-
- /* Move the pointer out of the way to avoid hovering over reactive
- * elements (e.g. users list at login) causing undesired behaviour. */
- meta_backend_warp_pointer (backend,
- primary->rect.x + primary->rect.width * 0.9,
- primary->rect.y + primary->rect.height * 0.9);
-
+ reset_pointer_position (backend);
priv->is_pointer_position_initialized = TRUE;
}
}