aboutsummaryrefslogtreecommitdiffstats
path: root/sway/input/seat.c
diff options
context:
space:
mode:
authorLibravatar Drew DeVault <sir@cmpwn.com>2018-03-31 15:13:27 -0400
committerLibravatar Drew DeVault <sir@cmpwn.com>2018-03-31 15:20:43 -0400
commitf2332dc75c05a62f87ba290433f12f4ce7f467ec (patch)
tree67c2f8e9d67cb45a9c18bbea17eb139f4c7eed82 /sway/input/seat.c
parentFix interaction between warping and following (diff)
downloadsway-f2332dc75c05a62f87ba290433f12f4ce7f467ec.tar.gz
sway-f2332dc75c05a62f87ba290433f12f4ce7f467ec.tar.zst
sway-f2332dc75c05a62f87ba290433f12f4ce7f467ec.zip
Address review feedback
Diffstat (limited to 'sway/input/seat.c')
-rw-r--r--sway/input/seat.c13
1 files changed, 8 insertions, 5 deletions
diff --git a/sway/input/seat.c b/sway/input/seat.c
index 4e7e018d..9aa34aca 100644
--- a/sway/input/seat.c
+++ b/sway/input/seat.c
@@ -1,5 +1,6 @@
1#define _XOPEN_SOURCE 700 1#define _XOPEN_SOURCE 700
2#include <wlr/types/wlr_cursor.h> 2#include <wlr/types/wlr_cursor.h>
3#include <wlr/types/wlr_output_layout.h>
3#include <wlr/types/wlr_xcursor_manager.h> 4#include <wlr/types/wlr_xcursor_manager.h>
4#include "sway/tree/container.h" 5#include "sway/tree/container.h"
5#include "sway/input/seat.h" 6#include "sway/input/seat.h"
@@ -291,7 +292,7 @@ void sway_seat_configure_xcursor(struct sway_seat *seat) {
291 seat->cursor->cursor->y); 292 seat->cursor->cursor->y);
292} 293}
293 294
294void _sway_seat_set_focus(struct sway_seat *seat, 295void sway_seat_set_focus_warp(struct sway_seat *seat,
295 struct sway_container *container, bool warp) { 296 struct sway_container *container, bool warp) {
296 struct sway_container *last_focus = sway_seat_get_focus(seat); 297 struct sway_container *last_focus = sway_seat_get_focus(seat);
297 298
@@ -351,12 +352,14 @@ void _sway_seat_set_focus(struct sway_seat *seat,
351 } 352 }
352 if (new_output && last_output && new_output != last_output 353 if (new_output && last_output && new_output != last_output
353 && config->mouse_warping && warp) { 354 && config->mouse_warping && warp) {
354 wlr_log(L_DEBUG, "warpin the mouse baby");
355 struct wlr_output *output = new_output->sway_output->wlr_output; 355 struct wlr_output *output = new_output->sway_output->wlr_output;
356 // TODO: Change container coords to layout coords
357 double x = container->x + output->lx + container->width / 2.0; 356 double x = container->x + output->lx + container->width / 2.0;
358 double y = container->y + output->ly + container->height / 2.0; 357 double y = container->y + output->ly + container->height / 2.0;
359 wlr_cursor_warp(seat->cursor->cursor, NULL, x, y); 358 if (!wlr_output_layout_contains_point(
359 root_container.sway_root->output_layout,
360 output, seat->cursor->cursor->x, seat->cursor->cursor->y)) {
361 wlr_cursor_warp(seat->cursor->cursor, NULL, x, y);
362 }
360 } 363 }
361 } 364 }
362 365
@@ -371,7 +374,7 @@ void _sway_seat_set_focus(struct sway_seat *seat,
371 374
372void sway_seat_set_focus(struct sway_seat *seat, 375void sway_seat_set_focus(struct sway_seat *seat,
373 struct sway_container *container) { 376 struct sway_container *container) {
374 _sway_seat_set_focus(seat, container, true); 377 sway_seat_set_focus_warp(seat, container, true);
375} 378}
376 379
377struct sway_container *sway_seat_get_focus_inactive(struct sway_seat *seat, struct sway_container *container) { 380struct sway_container *sway_seat_get_focus_inactive(struct sway_seat *seat, struct sway_container *container) {