summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/backends/meta-cursor-tracker-private.h16
-rw-r--r--src/backends/meta-cursor-tracker.c21
-rw-r--r--src/core/display.c13
3 files changed, 7 insertions, 43 deletions
diff --git a/src/backends/meta-cursor-tracker-private.h b/src/backends/meta-cursor-tracker-private.h
index 1ec4aff2d..20faa4111 100644
--- a/src/backends/meta-cursor-tracker-private.h
+++ b/src/backends/meta-cursor-tracker-private.h
@@ -37,22 +37,8 @@ struct _MetaCursorTracker {
gboolean is_showing;
- /* The cursor tracker stores the cursor for the current grab
- * operation, the cursor for the window with pointer focus, and
- * the cursor for the root window, which contains either the
- * default arrow cursor or the 'busy' hourglass if we're launching
- * an app.
- *
- * We choose the first one available -- if there's a grab cursor,
- * we choose that cursor, if there's window cursor, we choose that,
- * otherwise we choose the root cursor.
- *
- * The displayed_cursor contains the chosen cursor.
- */
MetaCursorReference *displayed_cursor;
- MetaCursorReference *grab_cursor;
-
/* Wayland clients can set a NULL buffer as their cursor
* explicitly, which means that we shouldn't display anything.
* So, we can't simply store a NULL in window_cursor to
@@ -74,8 +60,6 @@ struct _MetaCursorTrackerClass {
gboolean meta_cursor_tracker_handle_xevent (MetaCursorTracker *tracker,
XEvent *xevent);
-void meta_cursor_tracker_set_grab_cursor (MetaCursorTracker *tracker,
- MetaCursorReference *cursor);
void meta_cursor_tracker_set_window_cursor (MetaCursorTracker *tracker,
MetaCursorReference *cursor);
void meta_cursor_tracker_unset_window_cursor (MetaCursorTracker *tracker);
diff --git a/src/backends/meta-cursor-tracker.c b/src/backends/meta-cursor-tracker.c
index ac2d96542..6005e5965 100644
--- a/src/backends/meta-cursor-tracker.c
+++ b/src/backends/meta-cursor-tracker.c
@@ -63,11 +63,11 @@ get_displayed_cursor (MetaCursorTracker *tracker)
if (!tracker->is_showing)
return NULL;
- if (tracker->grab_cursor)
- return tracker->grab_cursor;
-
- if (tracker->has_window_cursor)
- return tracker->window_cursor;
+ if (tracker->screen->display->grab_op == META_GRAB_OP_NONE)
+ {
+ if (tracker->has_window_cursor)
+ return tracker->window_cursor;
+ }
return tracker->root_cursor;
}
@@ -375,17 +375,6 @@ meta_cursor_tracker_get_hot (MetaCursorTracker *tracker,
}
void
-meta_cursor_tracker_set_grab_cursor (MetaCursorTracker *tracker,
- MetaCursorReference *cursor)
-{
- g_clear_pointer (&tracker->grab_cursor, meta_cursor_reference_unref);
- if (cursor)
- tracker->grab_cursor = meta_cursor_reference_ref (cursor);
-
- sync_cursor (tracker);
-}
-
-void
meta_cursor_tracker_set_window_cursor (MetaCursorTracker *tracker,
MetaCursorReference *cursor)
{
diff --git a/src/core/display.c b/src/core/display.c
index 464ddf974..bb5946886 100644
--- a/src/core/display.c
+++ b/src/core/display.c
@@ -1702,14 +1702,8 @@ meta_display_set_grab_op_cursor (MetaDisplay *display,
{
/* Set root cursor */
MetaBackend *backend = meta_get_backend ();
- MetaCursorTracker *tracker = meta_cursor_tracker_get_for_screen (display->screen);
- MetaCursor cursor = meta_cursor_for_grab_op (op);
- MetaCursorReference *cursor_ref;
- cursor_ref = meta_cursor_reference_from_theme (cursor);
- meta_cursor_tracker_set_grab_cursor (tracker, cursor_ref);
- if (cursor_ref)
- meta_cursor_reference_unref (cursor_ref);
+ meta_screen_set_cursor (display->screen, meta_cursor_for_grab_op (op));
if (meta_backend_grab_device (backend, META_VIRTUAL_CORE_POINTER_ID, timestamp))
display->grab_have_pointer = TRUE;
@@ -1862,8 +1856,6 @@ void
meta_display_end_grab_op (MetaDisplay *display,
guint32 timestamp)
{
- MetaCursorTracker *tracker;
-
meta_topic (META_DEBUG_WINDOW_OPS,
"Ending grab op %u at time %u\n", display->grab_op, timestamp);
@@ -1904,8 +1896,7 @@ meta_display_end_grab_op (MetaDisplay *display,
meta_window_ungrab_all_keys (display->grab_window, timestamp);
}
- tracker = meta_cursor_tracker_get_for_screen (display->screen);
- meta_cursor_tracker_set_grab_cursor (tracker, NULL);
+ meta_screen_set_cursor (display->screen, META_CURSOR_DEFAULT);
display->grab_timestamp = 0;
display->grab_window = NULL;