Window decoration scrolling: don't focus sibling
The current behaviour is buggy in the following layout: T [ A* V [ B C ] ], where the focus stack in V is B > C. When the user scrolls down, focus correctly moves to B but if the user scrolls down again the whole vertical container is focused. This happens because 'bool scroll_next_possible' is false but con_activate is called on the tabbed container's sibling - the vertical container.
This commit is contained in:
@ -234,14 +234,10 @@ static int route_click(Con *con, xcb_button_press_event_t *event, const bool mod
|
||||
event->detail == XCB_BUTTON_SCROLL_RIGHT)) {
|
||||
DLOG("Scrolling on a window decoration\n");
|
||||
orientation_t orientation = (con->parent->layout == L_STACKED ? VERT : HORIZ);
|
||||
/* Focus the currently focused container on the same level that the
|
||||
* user scrolled on. e.g. the tabbed decoration contains
|
||||
* "urxvt | i3: V[xterm geeqie] | firefox",
|
||||
* focus is on the xterm, but the user scrolled on urxvt.
|
||||
* The splitv container will be focused. */
|
||||
/* Use the focused child of the tabbed / stacked container, not the
|
||||
* container the user scrolled on. */
|
||||
Con *focused = con->parent;
|
||||
focused = TAILQ_FIRST(&(focused->focus_head));
|
||||
con_activate(focused);
|
||||
/* To prevent scrolling from going outside the container (see ticket
|
||||
* #557), we first check if scrolling is possible at all. */
|
||||
bool scroll_prev_possible = (TAILQ_PREV(focused, nodes_head, nodes) != NULL);
|
||||
|
Reference in New Issue
Block a user