Do not resize/reposition floating containers when moving them to scratchpad

This commit is contained in:
jj 2013-09-27 11:03:52 +02:00 committed by Michael Stapelberg
parent 459490b67b
commit 98c4cc46e4
2 changed files with 32 additions and 1 deletions

View File

@ -66,8 +66,14 @@ void scratchpad_move(Con *con) {
* adjusted in size according to what the user specifies. */ * adjusted in size according to what the user specifies. */
if (con->scratchpad_state == SCRATCHPAD_NONE) { if (con->scratchpad_state == SCRATCHPAD_NONE) {
DLOG("This window was never used as a scratchpad before.\n"); DLOG("This window was never used as a scratchpad before.\n");
if (con == maybe_floating_con) {
DLOG("It was in floating mode before, set scratchpad state to changed.\n");
con->scratchpad_state = SCRATCHPAD_CHANGED;
} else {
DLOG("It was in tiling mode before, set scratchpad state to fresh.\n");
con->scratchpad_state = SCRATCHPAD_FRESH; con->scratchpad_state = SCRATCHPAD_FRESH;
} }
}
} }
/* /*

View File

@ -446,4 +446,29 @@ is(get_focused($ws), $scratch, 'scratchpad is focused');
# TODO: make i3bar display *something* when a window on the scratchpad has the urgency hint # TODO: make i3bar display *something* when a window on the scratchpad has the urgency hint
################################################################################
# 14: Verify that 'move scratchpad' sends floating containers to scratchpad but
# does not resize/resposition the container on the next 'scratchpad show', i.e.,
# i3 sets the scratchpad flag to SCRATCHPAD_CHANGED
################################################################################
clear_scratchpad;
$tmp = fresh_workspace;
open_window;
($nodes, $focus) = get_ws_content($tmp);
is(scalar @$nodes, 1, 'precisely one window on current ws');
is($nodes->[0]->{scratchpad_state}, 'none', 'scratchpad_state none');
cmd 'floating toggle';
cmd 'move scratchpad';
$__i3_scratch = get_ws('__i3_scratch');
@scratch_nodes = @{$__i3_scratch->{floating_nodes}};
is(scalar @scratch_nodes, 1, '__i3_scratch contains our window');
($nodes, $focus) = get_ws_content($tmp);
is(scalar @$nodes, 0, 'no window on current ws anymore');
is($scratch_nodes[0]->{scratchpad_state}, 'changed', 'scratchpad_state changed');
done_testing; done_testing;