aboutsummaryrefslogtreecommitdiff
path: root/sway/input/seat.c
diff options
context:
space:
mode:
Diffstat (limited to 'sway/input/seat.c')
-rw-r--r--sway/input/seat.c27
1 files changed, 9 insertions, 18 deletions
diff --git a/sway/input/seat.c b/sway/input/seat.c
index c7deabed..d8d2f3a4 100644
--- a/sway/input/seat.c
+++ b/sway/input/seat.c
@@ -774,27 +774,18 @@ void seat_set_focus_warp(struct sway_seat *seat, struct sway_node *node,
workspace_consider_destroy(last_workspace);
}
- if (last_focus) {
- if (config->mouse_warping && warp &&
- (new_output != last_output ||
- config->mouse_warping == WARP_CONTAINER)) {
- double x = 0;
- double y = 0;
+ if (last_focus && warp) {
+ if (container && config->mouse_warping == WARP_CONTAINER) {
+ cursor_warp_to_container(seat->cursor, container);
+ cursor_send_pointer_motion(seat->cursor, 0, true);
+ } else if (new_output != last_output &&
+ config->mouse_warping >= WARP_OUTPUT) {
if (container) {
- x = container->x + container->width / 2.0;
- y = container->y + container->height / 2.0;
+ cursor_warp_to_container(seat->cursor, container);
} else {
- x = new_workspace->x + new_workspace->width / 2.0;
- y = new_workspace->y + new_workspace->height / 2.0;
- }
-
- if (!wlr_output_layout_contains_point(root->output_layout,
- new_output->wlr_output, seat->cursor->cursor->x,
- seat->cursor->cursor->y)
- || config->mouse_warping == WARP_CONTAINER) {
- wlr_cursor_warp(seat->cursor->cursor, NULL, x, y);
- cursor_send_pointer_motion(seat->cursor, 0, true);
+ cursor_warp_to_workspace(seat->cursor, new_workspace);
}
+ cursor_send_pointer_motion(seat->cursor, 0, true);
}
}