input: focus container when scrolling on titlebar

Fixes #6503.
This commit is contained in:
Tudor Brindus 2022-10-09 22:11:09 -04:00 committed by Simon Ser
parent 09354db878
commit c7bced9329

View file

@ -710,6 +710,7 @@ static void handle_pointer_axis(struct sway_seat *seat,
// Scrolling on a tabbed or stacked title bar (handled as press event)
if (!handled && (on_titlebar || on_titlebar_border)) {
struct sway_node *new_focus;
enum sway_container_layout layout = container_parent_layout(cont);
if (layout == L_TABBED || layout == L_STACKED) {
struct sway_node *tabcontainer = node_get_parent(node);
@ -726,14 +727,16 @@ static void handle_pointer_axis(struct sway_seat *seat,
struct sway_container *new_sibling_con = siblings->items[desired];
struct sway_node *new_sibling = &new_sibling_con->node;
struct sway_node *new_focus =
seat_get_focus_inactive(seat, new_sibling);
// Use the focused child of the tabbed/stacked container, not the
// container the user scrolled on.
seat_set_focus(seat, new_focus);
transaction_commit_dirty();
handled = true;
new_focus = seat_get_focus_inactive(seat, new_sibling);
} else {
new_focus = seat_get_focus_inactive(seat, &cont->node);
}
seat_set_focus(seat, new_focus);
transaction_commit_dirty();
handled = true;
}
// Handle mouse bindings - x11 mouse buttons 4-7 - release event