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/commands/border.c | 5 ----- sway/commands/focus.c | 2 -- 2 files changed, 7 deletions(-) (limited to 'sway/commands') diff --git a/sway/commands/border.c b/sway/commands/border.c index 5b65148d..37047812 100644 --- a/sway/commands/border.c +++ b/sway/commands/border.c @@ -94,10 +94,5 @@ struct cmd_results *cmd_border(int argc, char **argv) { arrange_container(view->container); - struct sway_seat *seat = input_manager_current_seat(); - if (seat->cursor) { - cursor_rebase(seat->cursor); - } - return cmd_results_new(CMD_SUCCESS, NULL, NULL); } diff --git a/sway/commands/focus.c b/sway/commands/focus.c index 81af8e0f..b4965cf8 100644 --- a/sway/commands/focus.c +++ b/sway/commands/focus.c @@ -236,7 +236,6 @@ struct cmd_results *cmd_focus(int argc, char **argv) { if (argc == 0 && container) { seat_set_focus_container(seat, container); seat_consider_warp_to_focus(seat); - cursor_rebase(seat->cursor); return cmd_results_new(CMD_SUCCESS, NULL, NULL); } @@ -294,7 +293,6 @@ struct cmd_results *cmd_focus(int argc, char **argv) { if (next_focus) { seat_set_focus(seat, next_focus); seat_consider_warp_to_focus(seat); - cursor_rebase(seat->cursor); } return cmd_results_new(CMD_SUCCESS, NULL, NULL); -- cgit v1.2.3-54-g00ecf