From 1f0aeae33591fb46b3f8a91ca91975daf2a8bbf9 Mon Sep 17 00:00:00 2001 From: Rouven Czerwinski Date: Mon, 15 Oct 2018 16:21:38 +0200 Subject: [PATCH] view: rewarp cursor during view_unmap If the cursor is warped during the destruction of the workspace, we end up in the wrong position. Warp the cursor after arrange_workspace() so we end up in the correct position. --- sway/tree/view.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/sway/tree/view.c b/sway/tree/view.c index bdd5f830..4b9bbfd0 100644 --- a/sway/tree/view.c +++ b/sway/tree/view.c @@ -637,7 +637,16 @@ void view_unmap(struct sway_view *view) { struct sway_seat *seat; wl_list_for_each(seat, &input_manager->seats, link) { - cursor_send_pointer_motion(seat->cursor, 0, true); + if (config->mouse_warping == WARP_CONTAINER) { + struct sway_node *node = seat_get_focus(seat); + if (node && node->type == N_CONTAINER) { + cursor_warp_to_container(seat->cursor, node->sway_container); + } else if (node && node->type == N_WORKSPACE) { + cursor_warp_to_workspace(seat->cursor, node->sway_workspace); + } + } else { + cursor_send_pointer_motion(seat->cursor, 0, true); + } } transaction_commit_dirty();