diff options
author | Ryan Dwyer <ryandwyer1@gmail.com> | 2018-11-01 08:29:45 +1000 |
---|---|---|
committer | Ryan Dwyer <ryandwyer1@gmail.com> | 2018-11-01 08:29:45 +1000 |
commit | bf19f63a79f4d844259800c9415599271438cabd (patch) | |
tree | 3f81a96d7aa72cc4cd8e94c3f656ce27c6b6b34f /sway | |
parent | Merge pull request #3042 from madblobfish/swaymsg-fish-completions (diff) | |
download | sway-bf19f63a79f4d844259800c9415599271438cabd.tar.gz sway-bf19f63a79f4d844259800c9415599271438cabd.tar.zst sway-bf19f63a79f4d844259800c9415599271438cabd.zip |
Wrap to fartherest output when running focus output
Also moves the `opposite_direction` function into `util.c` as it's used
in two places now.
Diffstat (limited to 'sway')
-rw-r--r-- | sway/commands/focus.c | 11 | ||||
-rw-r--r-- | sway/commands/move.c | 13 |
2 files changed, 11 insertions, 13 deletions
diff --git a/sway/commands/focus.c b/sway/commands/focus.c index 521b2427..cef92144 100644 --- a/sway/commands/focus.c +++ b/sway/commands/focus.c | |||
@@ -196,6 +196,17 @@ static struct cmd_results *focus_output(struct sway_seat *seat, | |||
196 | } | 196 | } |
197 | struct sway_workspace *ws = seat_get_focused_workspace(seat); | 197 | struct sway_workspace *ws = seat_get_focused_workspace(seat); |
198 | output = output_get_in_direction(ws->output, direction); | 198 | output = output_get_in_direction(ws->output, direction); |
199 | |||
200 | if (!output) { | ||
201 | int center_lx = ws->output->lx + ws->output->width / 2; | ||
202 | int center_ly = ws->output->ly + ws->output->height / 2; | ||
203 | struct wlr_output *target = wlr_output_layout_farthest_output( | ||
204 | root->output_layout, opposite_direction(direction), | ||
205 | ws->output->wlr_output, center_lx, center_ly); | ||
206 | if (target) { | ||
207 | output = output_from_wlr_output(target); | ||
208 | } | ||
209 | } | ||
199 | } | 210 | } |
200 | 211 | ||
201 | free(identifier); | 212 | free(identifier); |
diff --git a/sway/commands/move.c b/sway/commands/move.c index 30c198e4..9035e3e2 100644 --- a/sway/commands/move.c +++ b/sway/commands/move.c | |||
@@ -27,19 +27,6 @@ static const char *expected_syntax = | |||
27 | "'move <container|window|workspace> [to] output <name|direction>' or " | 27 | "'move <container|window|workspace> [to] output <name|direction>' or " |
28 | "'move <container|window> [to] mark <mark>'"; | 28 | "'move <container|window> [to] mark <mark>'"; |
29 | 29 | ||
30 | enum wlr_direction opposite_direction(enum wlr_direction d) { | ||
31 | switch (d) { | ||
32 | case WLR_DIRECTION_UP: | ||
33 | return WLR_DIRECTION_DOWN; | ||
34 | case WLR_DIRECTION_DOWN: | ||
35 | return WLR_DIRECTION_UP; | ||
36 | case WLR_DIRECTION_RIGHT: | ||
37 | return WLR_DIRECTION_LEFT; | ||
38 | default: | ||
39 | return WLR_DIRECTION_RIGHT; | ||
40 | } | ||
41 | } | ||
42 | |||
43 | static struct sway_output *output_in_direction(const char *direction_string, | 30 | static struct sway_output *output_in_direction(const char *direction_string, |
44 | struct sway_output *reference, int ref_lx, int ref_ly) { | 31 | struct sway_output *reference, int ref_lx, int ref_ly) { |
45 | struct { | 32 | struct { |