Merge pull request #2849 from Streetwalrus/next
Create a new split container when switching a workspace container to split layout
This commit is contained in:
commit
d4eaea8289
|
@ -1756,7 +1756,7 @@ void con_set_layout(Con *con, layout_t layout) {
|
|||
con->workspace_layout = ws_layout;
|
||||
DLOG("Setting layout to %d\n", layout);
|
||||
con->layout = layout;
|
||||
} else if (layout == L_STACKED || layout == L_TABBED) {
|
||||
} else if (layout == L_STACKED || layout == L_TABBED || layout == L_SPLITV || layout == L_SPLITH) {
|
||||
DLOG("Creating new split container\n");
|
||||
/* 1: create a new split container */
|
||||
Con *new = con_new(NULL, NULL);
|
||||
|
@ -1848,6 +1848,10 @@ void con_toggle_layout(Con *con, const char *toggle_mode) {
|
|||
* change to the opposite split layout. */
|
||||
if (parent->layout != L_SPLITH && parent->layout != L_SPLITV) {
|
||||
layout = parent->last_split_layout;
|
||||
/* In case last_split_layout was not initialized… */
|
||||
if (layout == L_DEFAULT) {
|
||||
layout = L_SPLITH;
|
||||
}
|
||||
} else {
|
||||
layout = (parent->layout == L_SPLITH) ? L_SPLITV : L_SPLITH;
|
||||
}
|
||||
|
|
|
@ -375,7 +375,74 @@ ok(@content == 2, 'two containers opened');
|
|||
isnt($content[0]->{layout}, 'tabbed', 'layout not tabbed');
|
||||
isnt($content[1]->{layout}, 'tabbed', 'layout not tabbed');
|
||||
|
||||
exit_gracefully($pid);
|
||||
|
||||
#####################################################################
|
||||
# 16: Check that the command 'layout toggle split' works regardless
|
||||
# of what layout we're using.
|
||||
#####################################################################
|
||||
|
||||
$config = <<EOT;
|
||||
# i3 config file (v4)
|
||||
font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
|
||||
workspace_layout default
|
||||
EOT
|
||||
|
||||
$pid = launch_with_config($config);
|
||||
|
||||
$tmp = fresh_workspace;
|
||||
|
||||
my @layouts = ('splith', 'splitv', 'tabbed', 'stacked');
|
||||
my $first_layout;
|
||||
|
||||
foreach $first_layout (@layouts) {
|
||||
cmd 'layout ' . $first_layout;
|
||||
$first = open_window;
|
||||
$second = open_window;
|
||||
cmd 'layout toggle split';
|
||||
@content = @{get_ws_content($tmp)};
|
||||
if ($first_layout eq 'splith') {
|
||||
is($content[0]->{layout}, 'splitv', 'layout toggles to splitv');
|
||||
} else {
|
||||
is($content[0]->{layout}, 'splith', 'layout toggles to splith');
|
||||
}
|
||||
|
||||
cmd '[id="' . $first->id . '"] kill';
|
||||
cmd '[id="' . $second->id . '"] kill';
|
||||
sync_with_i3;
|
||||
}
|
||||
|
||||
exit_gracefully($pid);
|
||||
|
||||
#####################################################################
|
||||
# 17: Check about setting a new layout.
|
||||
#####################################################################
|
||||
|
||||
$config = <<EOT;
|
||||
# i3 config file (v4)
|
||||
font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
|
||||
workspace_layout default
|
||||
EOT
|
||||
|
||||
$pid = launch_with_config($config);
|
||||
|
||||
$tmp = fresh_workspace;
|
||||
|
||||
my $second_layout;
|
||||
|
||||
foreach $first_layout (@layouts) {
|
||||
foreach $second_layout (@layouts) {
|
||||
cmd 'layout ' . $first_layout;
|
||||
$first = open_window;
|
||||
$second = open_window;
|
||||
cmd 'layout ' . $second_layout;
|
||||
@content = @{get_ws_content($tmp)};
|
||||
is($content[0]->{layout}, $second_layout, 'layout changes to ' . $second_layout);
|
||||
|
||||
cmd '[id="' . $first->id . '"] kill';
|
||||
cmd '[id="' . $second->id . '"] kill';
|
||||
sync_with_i3;
|
||||
}
|
||||
}
|
||||
|
||||
done_testing;
|
||||
|
|
Loading…
Reference in New Issue