mirror of
https://github.com/swaywm/sway.git
synced 2024-11-26 18:01:29 +00:00
Prevent "move next" and "move prev" commands from crashing
Fixes #1120 When the parent of a view is C_WORKSPACE and the movement direction is either MOVE_PREV or MOVE_NEXT, the code would attempt to move the views to the next output, but swayc_adjacent_output can't accept non-directional movement commands and causes undefined behaviour and a segfault. If the code is simply skipped, we end up in an infinite loop. Instead, we can allow containers whose parent is a C_WORKSPACE take the path that handles MOVE_PREV and MOVE_NEXT, which behaves as you would expect. I'm not certain that this fix is entirely correct as the desired behaviour of move_container is not very well defined, but it seems to work.
This commit is contained in:
parent
d7350915d9
commit
924ed6464c
|
@ -417,7 +417,7 @@ void move_container(swayc_t *container, enum movement_direction dir, int move_am
|
|||
sway_log(L_DEBUG, "container:%p, parent:%p, child %p,",
|
||||
container,parent,child);
|
||||
if (parent->layout == layout
|
||||
|| (layout == L_NONE && parent->type == C_CONTAINER) /* accept any layout for next/prev direction */
|
||||
|| (layout == L_NONE && (parent->type == C_CONTAINER || parent->type == C_WORKSPACE)) /* accept any layout for next/prev direction */
|
||||
|| (parent->layout == L_TABBED && layout == L_HORIZ)
|
||||
|| (parent->layout == L_STACKED && layout == L_VERT)
|
||||
|| is_auto_layout(parent->layout)) {
|
||||
|
|
Loading…
Reference in a new issue