|
|
|
@ -33,19 +33,6 @@ static void output_layout_handle_change(struct wl_listener *listener,
|
|
|
|
|
arrange_windows(&root_container, layout_box->width, layout_box->height);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
struct sway_container *container_set_layout(struct sway_container *container,
|
|
|
|
|
enum sway_container_layout layout) {
|
|
|
|
|
if (container->type == C_WORKSPACE) {
|
|
|
|
|
container->workspace_layout = layout;
|
|
|
|
|
if (layout == L_HORIZ || layout == L_VERT) {
|
|
|
|
|
container->layout = layout;
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
container->layout = layout;
|
|
|
|
|
}
|
|
|
|
|
return container;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void layout_init(void) {
|
|
|
|
|
root_container.id = 0; // normally assigned in new_swayc()
|
|
|
|
|
root_container.type = C_ROOT;
|
|
|
|
@ -305,8 +292,8 @@ static void workspace_rejigger(struct sway_container *ws,
|
|
|
|
|
|
|
|
|
|
int index = move_offs(move_dir);
|
|
|
|
|
container_insert_child(ws, child, index < 0 ? 0 : 1);
|
|
|
|
|
container_set_layout(ws,
|
|
|
|
|
move_dir == MOVE_LEFT || move_dir == MOVE_RIGHT ? L_HORIZ : L_VERT);
|
|
|
|
|
ws->layout =
|
|
|
|
|
move_dir == MOVE_LEFT || move_dir == MOVE_RIGHT ? L_HORIZ : L_VERT;
|
|
|
|
|
|
|
|
|
|
container_flatten(ws);
|
|
|
|
|
container_reap_empty_recursive(original_parent);
|
|
|
|
@ -387,9 +374,9 @@ void container_move(struct sway_container *container,
|
|
|
|
|
workspace_rejigger(current, container, move_dir);
|
|
|
|
|
} else if (current->children->length == 2) {
|
|
|
|
|
wlr_log(L_DEBUG, "Changing workspace layout");
|
|
|
|
|
container_set_layout(current,
|
|
|
|
|
current->layout =
|
|
|
|
|
move_dir == MOVE_LEFT || move_dir == MOVE_RIGHT ?
|
|
|
|
|
L_HORIZ : L_VERT);
|
|
|
|
|
L_HORIZ : L_VERT;
|
|
|
|
|
container_insert_child(current, container, offs < 0 ? 0 : 1);
|
|
|
|
|
arrange_windows(current, -1, -1);
|
|
|
|
|
}
|
|
|
|
@ -1066,7 +1053,7 @@ struct sway_container *container_split(struct sway_container *child,
|
|
|
|
|
|
|
|
|
|
container_add_child(workspace, cont);
|
|
|
|
|
enum sway_container_layout old_layout = workspace->layout;
|
|
|
|
|
container_set_layout(workspace, layout);
|
|
|
|
|
workspace->layout = layout;
|
|
|
|
|
cont->layout = old_layout;
|
|
|
|
|
|
|
|
|
|
if (set_focus) {
|
|
|
|
|