diff options
| author | Furkan Sahin <furkan-dev@proton.me> | 2020-06-06 22:43:02 -0400 |
|---|---|---|
| committer | Furkan Sahin <furkan-dev@proton.me> | 2020-06-06 22:43:02 -0400 |
| commit | ad4434b4db24ad49f770701697bae83639a7c82c (patch) | |
| tree | f0e2deddae116fdd0c0bbaa09f962d1603b29542 | |
| parent | c33f25bdc5678f8cbe018e8a0d3b1f434e21f859 (diff) | |
input: tweak resize behavior to not change tab focus on border click
If a resize is triggered on a tabbed or stacked container, change focus
to the tab which already had inactive focus, rather than to the tab
whose border was clicked -- otherwise, we'd change the active tab when
the user probably just wanted to resize.
| -rw-r--r-- | sway/input/seatop_default.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/sway/input/seatop_default.c b/sway/input/seatop_default.c index 3ef816fd..6e3c7744 100644 --- a/sway/input/seatop_default.c +++ b/sway/input/seatop_default.c @@ -327,7 +327,16 @@ static void handle_button(struct sway_seat *seat, uint32_t time_msec, // Handle tiling resize via border if (cont && resize_edge && button == BTN_LEFT && state == WLR_BUTTON_PRESSED && !is_floating) { - seat_set_focus_container(seat, cont); + // If a resize is triggered on a tabbed or stacked container, change + // focus to the tab which already had inactive focus -- otherwise, we'd + // change the active tab when the user probably just wanted to resize. + struct sway_container *cont_to_focus = cont; + enum sway_container_layout layout = container_parent_layout(cont); + if (layout == L_TABBED || layout == L_STACKED) { + cont_to_focus = seat_get_focus_inactive_view(seat, &cont->parent->node); + } + + seat_set_focus_container(seat, cont_to_focus); seatop_begin_resize_tiling(seat, cont, edge); return; } |
