scratchpad_move: un-fullscreen correct container
Fixes https://github.com/i3/i3/issues/2857#issuecomment-496264445
This commit is contained in:
parent
879fd6c08b
commit
95d4ce3ed6
|
@ -40,9 +40,7 @@ void scratchpad_move(Con *con) {
|
||||||
|
|
||||||
/* If the current con is in fullscreen mode, we need to disable that,
|
/* If the current con is in fullscreen mode, we need to disable that,
|
||||||
* as a scratchpad window should never be in fullscreen mode */
|
* as a scratchpad window should never be in fullscreen mode */
|
||||||
if (focused && focused->type != CT_WORKSPACE && focused->fullscreen_mode != CF_NONE) {
|
con_disable_fullscreen(con);
|
||||||
con_toggle_fullscreen(focused, CF_OUTPUT);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 1: Ensure the window or any parent is floating. From now on, we deal
|
/* 1: Ensure the window or any parent is floating. From now on, we deal
|
||||||
* with the CT_FLOATING_CON. We use automatic == false because the user
|
* with the CT_FLOATING_CON. We use automatic == false because the user
|
||||||
|
|
|
@ -21,9 +21,10 @@ use i3test;
|
||||||
|
|
||||||
my $tmp = fresh_workspace;
|
my $tmp = fresh_workspace;
|
||||||
|
|
||||||
##########################################################################################
|
###############################################################################
|
||||||
# map two windows in one container, fullscreen one of them and then move it to scratchpad
|
# map two windows in one container, fullscreen one of them and then move it to
|
||||||
##########################################################################################
|
# scratchpad
|
||||||
|
###############################################################################
|
||||||
|
|
||||||
my $first_win = open_window;
|
my $first_win = open_window;
|
||||||
my $second_win = open_window;
|
my $second_win = open_window;
|
||||||
|
@ -50,9 +51,10 @@ cmd 'floating toggle';
|
||||||
# see if no window is in fullscreen mode
|
# see if no window is in fullscreen mode
|
||||||
is_num_fullscreen($tmp, 0, 'amount of fullscreen windows after showing previously fullscreened scratchpad window');
|
is_num_fullscreen($tmp, 0, 'amount of fullscreen windows after showing previously fullscreened scratchpad window');
|
||||||
|
|
||||||
########################################################################################
|
###############################################################################
|
||||||
# move a window to scratchpad, focus parent container, make it fullscreen, focus a child
|
# move a window to scratchpad, focus parent container, make it fullscreen,
|
||||||
########################################################################################
|
# focus a child
|
||||||
|
###############################################################################
|
||||||
|
|
||||||
# make layout tabbed
|
# make layout tabbed
|
||||||
cmd 'layout tabbed';
|
cmd 'layout tabbed';
|
||||||
|
@ -72,9 +74,9 @@ cmd 'focus child';
|
||||||
# see if the window really is in fullscreen mode
|
# see if the window really is in fullscreen mode
|
||||||
is_num_fullscreen($tmp, 1, 'amount of fullscreen windows after enabling fullscreen on parent');
|
is_num_fullscreen($tmp, 1, 'amount of fullscreen windows after enabling fullscreen on parent');
|
||||||
|
|
||||||
##########################################################################
|
###############################################################################
|
||||||
# show a scratchpad window; no window should be in fullscreen mode anymore
|
# show a scratchpad window; no window should be in fullscreen mode anymore
|
||||||
##########################################################################
|
###############################################################################
|
||||||
|
|
||||||
# show the scratchpad window
|
# show the scratchpad window
|
||||||
cmd 'scratchpad show';
|
cmd 'scratchpad show';
|
||||||
|
@ -82,4 +84,29 @@ cmd 'scratchpad show';
|
||||||
# see if no window is in fullscreen mode
|
# see if no window is in fullscreen mode
|
||||||
is_num_fullscreen($tmp, 0, 'amount of fullscreen windows after showing a scratchpad window while a parent container was in fullscreen mode');
|
is_num_fullscreen($tmp, 0, 'amount of fullscreen windows after showing a scratchpad window while a parent container was in fullscreen mode');
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
# Moving window to scratchpad with command criteria does not unfullscreen
|
||||||
|
# currently focused container
|
||||||
|
# See https://github.com/i3/i3/issues/2857#issuecomment-496264445
|
||||||
|
###############################################################################
|
||||||
|
|
||||||
|
kill_all_windows;
|
||||||
|
$tmp = fresh_workspace;
|
||||||
|
|
||||||
|
$first_win = open_window;
|
||||||
|
$second_win = open_window;
|
||||||
|
cmd 'fullscreen';
|
||||||
|
cmd '[id=' . $first_win->id . '] move scratchpad';
|
||||||
|
|
||||||
|
is_num_fullscreen($tmp, 1, 'second window still fullscreen');
|
||||||
|
my $__i3_scratch = get_ws('__i3_scratch');
|
||||||
|
my @scratch_nodes = @{$__i3_scratch->{floating_nodes}};
|
||||||
|
is(scalar @scratch_nodes, 1, 'one window in scratchpad');
|
||||||
|
|
||||||
|
cmd '[id=' . $first_win->id . '] scratchpad show';
|
||||||
|
is_num_fullscreen($tmp, 0, 'second window not fullscreen');
|
||||||
|
$__i3_scratch = get_ws('__i3_scratch');
|
||||||
|
@scratch_nodes = @{$__i3_scratch->{floating_nodes}};
|
||||||
|
is(scalar @scratch_nodes, 0, 'windows in scratchpad');
|
||||||
|
|
||||||
done_testing;
|
done_testing;
|
||||||
|
|
Loading…
Reference in New Issue