From 60a1d79de71660949f7a6fc83e242d9d95c75187 Mon Sep 17 00:00:00 2001 From: Ryan Dwyer Date: Thu, 25 Oct 2018 23:30:09 +1000 Subject: Rebase the cursor after applying transactions This approaches cursor rebasing from a different angle. Rather than littering the codebase with cursor_rebase calls and using transaction callbacks, this just runs cursor_rebase after applying every transaction - but only if there's outputs connected, because otherwise it causes a crash during shutdown. There is one known case where we still need to call cursor_rebase directly, and that's when running `seat seat0 cursor move ...`. This command doesn't set anything as dirty so no transaction occurs. --- sway/tree/view.c | 1 - sway/tree/workspace.c | 1 - 2 files changed, 2 deletions(-) (limited to 'sway/tree') diff --git a/sway/tree/view.c b/sway/tree/view.c index 20babf7b..4bc9e0f3 100644 --- a/sway/tree/view.c +++ b/sway/tree/view.c @@ -661,7 +661,6 @@ void view_unmap(struct sway_view *view) { cursor_warp_to_workspace(seat->cursor, node->sway_workspace); } } - cursor_rebase(seat->cursor); } transaction_commit_dirty(); diff --git a/sway/tree/workspace.c b/sway/tree/workspace.c index 65284679..27e9ac7a 100644 --- a/sway/tree/workspace.c +++ b/sway/tree/workspace.c @@ -404,7 +404,6 @@ bool workspace_switch(struct sway_workspace *workspace, } seat_set_focus(seat, next); arrange_workspace(workspace); - cursor_rebase(seat->cursor); return true; } -- cgit v1.2.3