diff options
author | Ryan Dwyer <ryandwyer1@gmail.com> | 2018-09-23 13:10:36 +1000 |
---|---|---|
committer | Ryan Dwyer <ryandwyer1@gmail.com> | 2018-09-23 13:10:36 +1000 |
commit | 93624599b3252c0c8378d8e788a500b4b597a135 (patch) | |
tree | 0473ea1e7a9f19df0a70b9f8378e45a0299e1cfb /sway/commands | |
parent | 68395f34f686aa1901077505405775ba5bafe6ee (diff) | |
download | sway-93624599b3252c0c8378d8e788a500b4b597a135.tar.xz |
Remove move_out_of_tabs_stacks
This fixes the following. Create these layouts and run move right:
(Initial layout -> expected result -> actual result)
* `H[S[unfocused focused] unfocused]` ->
`H[S[unfocused] focused unfocused]` ->
`H[H[S[unfocused] focused] unfocused]`
* `H[S[unfocused focused] V[unfocused]]` ->
`H[S[unfocused] V[unfocused focused]]` ->
`H[H[S[unfocused] focused] V[unfocused]]`
move_out_of_tabs_stacks was originally made to allow views to move out
of the tabbed/stacked container in the parallel direction, but at some
point this has started working using the regular logic.
Diffstat (limited to 'sway/commands')
-rw-r--r-- | sway/commands/move.c | 49 |
1 files changed, 2 insertions, 47 deletions
diff --git a/sway/commands/move.c b/sway/commands/move.c index 849a18ad..6e32c932 100644 --- a/sway/commands/move.c +++ b/sway/commands/move.c @@ -270,39 +270,6 @@ static void workspace_rejigger(struct sway_workspace *ws, child->width = child->height = 0; } -static void move_out_of_tabs_stacks(struct sway_container *container, - struct sway_container *current, enum movement_direction move_dir, - int offs) { - enum sway_container_layout layout = move_dir == - MOVE_LEFT || move_dir == MOVE_RIGHT ? L_HORIZ : L_VERT; - list_t *siblings = container_get_siblings(container); - if (container == current && siblings->length == 1) { - wlr_log(WLR_DEBUG, "Changing layout of parent"); - if (container->parent) { - container->parent->layout = layout; - container_update_representation(container); - } else { - container->workspace->layout = layout; - workspace_update_representation(container->workspace); - } - return; - } - - wlr_log(WLR_DEBUG, "Moving out of tab/stack into a split"); - if (current->parent) { - struct sway_container *new_parent = - container_split(current->parent, layout); - container_insert_child(new_parent, container, offs < 0 ? 0 : 1); - container_reap_empty(new_parent); - container_flatten(new_parent); - } else { - // Changing a workspace - struct sway_workspace *workspace = container->workspace; - workspace_split(workspace, layout); - workspace_insert_tiling(workspace, container, offs < 0 ? 0 : 1); - } -} - // Returns true if moved static bool container_move_in_direction(struct sway_container *container, enum movement_direction move_dir) { @@ -334,7 +301,6 @@ static bool container_move_in_direction(struct sway_container *container, int offs = move_dir == MOVE_LEFT || move_dir == MOVE_UP ? -1 : 1; while (current) { - struct sway_container *parent = current->parent; list_t *siblings = container_get_siblings(current); enum sway_container_layout layout = container_parent_layout(current); int index = list_find(siblings, current); @@ -343,15 +309,8 @@ static bool container_move_in_direction(struct sway_container *container, if (is_parallel(layout, move_dir)) { if (desired == -1 || desired == siblings->length) { if (current->parent == container->parent) { - if (!(parent && parent->is_fullscreen) && - (layout == L_TABBED || layout == L_STACKED)) { - move_out_of_tabs_stacks(container, current, - move_dir, offs); - return true; - } else { - current = current->parent; - continue; - } + current = current->parent; + continue; } else { // Special case if (current->parent) { @@ -369,10 +328,6 @@ static bool container_move_in_direction(struct sway_container *container, siblings->items[desired], move_dir); return true; } - } else if (!(parent && parent->is_fullscreen) && - (layout == L_TABBED || layout == L_STACKED)) { - move_out_of_tabs_stacks(container, current, move_dir, offs); - return true; } current = current->parent; |