diff options
author | Drew DeVault <[email protected]> | 2018-10-03 21:21:25 +0200 |
---|---|---|
committer | GitHub <[email protected]> | 2018-10-03 21:21:25 +0200 |
commit | 7fdc557f1e16f14dea080714b3a261daf8f4634e (patch) | |
tree | 2564be2f236c91052227bf2cdf322d620caa18b4 /sway/input/seat.c | |
parent | 01b8e171b8dd2dbdda1b1a652c39022602cd9dfb (diff) | |
parent | 426c33f4dc2515867a0d3b04cb865d5cad091d10 (diff) |
Merge pull request #2709 from BuJo/feature/raise_floating
raise floating
Diffstat (limited to 'sway/input/seat.c')
-rw-r--r-- | sway/input/seat.c | 29 |
1 files changed, 19 insertions, 10 deletions
diff --git a/sway/input/seat.c b/sway/input/seat.c index 69bee47e..15c56a43 100644 --- a/sway/input/seat.c +++ b/sway/input/seat.c @@ -606,6 +606,18 @@ static int handle_urgent_timeout(void *data) { return 0; } +static void container_raise_floating(struct sway_container *con) { + // Bring container to front by putting it at the end of the floating list. + struct sway_container *floater = con; + while (floater->parent) { + floater = floater->parent; + } + if (container_is_floating(floater)) { + list_move_to_end(floater->workspace->floating, floater); + node_set_dirty(&floater->workspace->node); + } +} + void seat_set_focus_warp(struct sway_seat *seat, struct sway_node *node, bool warp, bool notify) { if (seat->focused_layer) { @@ -733,16 +745,8 @@ void seat_set_focus_warp(struct sway_seat *seat, struct sway_node *node, } // If we've focused a floating container, bring it to the front. - // We do this by putting it at the end of the floating list. - if (container) { - struct sway_container *floater = container; - while (floater->parent) { - floater = floater->parent; - } - if (container_is_floating(floater)) { - list_move_to_end(floater->workspace->floating, floater); - node_set_dirty(&floater->workspace->node); - } + if (container && config->raise_floating) { + container_raise_floating(container); } if (last_focus) { @@ -1017,6 +1021,11 @@ void seat_begin_down(struct sway_seat *seat, struct sway_container *con, seat->op_ref_con_lx = sx; seat->op_ref_con_ly = sy; seat->op_moved = false; + + // In case the container was not raised by gaining focus, raise on click + if (con && !config->raise_floating) { + container_raise_floating(con); + } } void seat_begin_move_floating(struct sway_seat *seat, |