diff options
Diffstat (limited to 'sway/tree')
-rw-r--r-- | sway/tree/container.c | 2 | ||||
-rw-r--r-- | sway/tree/view.c | 2 | ||||
-rw-r--r-- | sway/tree/workspace.c | 3 |
3 files changed, 6 insertions, 1 deletions
diff --git a/sway/tree/container.c b/sway/tree/container.c index ccd79f0e..ebc60027 100644 --- a/sway/tree/container.c +++ b/sway/tree/container.c @@ -218,7 +218,7 @@ static struct sway_container *container_at_tabbed(struct sway_node *parent, // Surfaces struct sway_node *current = seat_get_active_child(seat, parent); - return tiling_container_at(current, lx, ly, surface, sx, sy); + return current ? tiling_container_at(current, lx, ly, surface, sx, sy) : NULL; } /** diff --git a/sway/tree/view.c b/sway/tree/view.c index 53215b40..10c48e2e 100644 --- a/sway/tree/view.c +++ b/sway/tree/view.c @@ -14,6 +14,7 @@ #include "sway/criteria.h" #include "sway/commands.h" #include "sway/desktop/transaction.h" +#include "sway/input/cursor.h" #include "sway/ipc-server.h" #include "sway/output.h" #include "sway/input/seat.h" @@ -583,6 +584,7 @@ void view_unmap(struct sway_view *view) { } transaction_commit_dirty(); + cursor_send_pointer_motion(config->handler_context.seat->cursor, 0, true); view->surface = NULL; } diff --git a/sway/tree/workspace.c b/sway/tree/workspace.c index 378bfc5d..b8e90892 100644 --- a/sway/tree/workspace.c +++ b/sway/tree/workspace.c @@ -7,6 +7,7 @@ #include <strings.h> #include "stringop.h" #include "sway/input/input-manager.h" +#include "sway/input/cursor.h" #include "sway/input/seat.h" #include "sway/ipc-server.h" #include "sway/output.h" @@ -400,6 +401,7 @@ bool workspace_switch(struct sway_workspace *workspace, if (&floater->node == focus) { seat_set_focus(seat, NULL); seat_set_focus_container(seat, floater); + cursor_send_pointer_motion(seat->cursor, 0, true); } --i; } @@ -422,6 +424,7 @@ bool workspace_switch(struct sway_workspace *workspace, } seat_set_focus(seat, next); arrange_workspace(workspace); + cursor_send_pointer_motion(seat->cursor, 0, true); return true; } |