X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=testcases%2Ft%2F185-scratchpad.t;h=5901f99cfb6538fc273ac0ccf5ceb404c23eb656;hb=1dbdd4fece86c5f85bde54e40f58fa1a91810933;hp=598f2b360e6a05a27f7b4ef520347ccd1a605395;hpb=c2061042e14f2d8f79b807fd36d79d6d9554804e;p=i3%2Fi3 diff --git a/testcases/t/185-scratchpad.t b/testcases/t/185-scratchpad.t index 598f2b36..5901f99c 100644 --- a/testcases/t/185-scratchpad.t +++ b/testcases/t/185-scratchpad.t @@ -93,8 +93,7 @@ is(scalar @{$__i3_scratch->{floating_nodes}}, 0, '__i3_scratch ws empty'); ################################################################################ # 3: Verify that 'scratchpad toggle' sends a window to the __i3_scratch # workspace and sets the scratchpad flag to SCRATCHPAD_FRESH. The window’s size -# and position will be changed (once!) on the next 'scratchpad show' and the -# flag will be changed to SCRATCHPAD_CHANGED. +# and position will be changed on the next 'scratchpad show'. ################################################################################ my ($nodes, $focus) = get_ws_content($tmp); @@ -165,10 +164,33 @@ $__i3_scratch = get_ws('__i3_scratch'); @scratch_nodes = @{$__i3_scratch->{floating_nodes}}; is(scalar @scratch_nodes, 1, '__i3_scratch contains our window'); -is($scratch_nodes[0]->{scratchpad_state}, 'changed', 'scratchpad_state changed'); +################################################################################ +# 6: Resizing the window should disable auto centering on scratchpad show +################################################################################ + +cmd 'scratchpad show'; + +$ws = get_ws($tmp); +is($ws->{floating_nodes}->[0]->{scratchpad_state}, 'fresh', + 'scratchpad_state fresh'); + +cmd 'resize grow width 10 px'; +cmd 'scratchpad show'; +cmd 'scratchpad show'; + +$ws = get_ws($tmp); +$scratchrect = $ws->{floating_nodes}->[0]->{rect}; +$outputrect = $output->{rect}; + +is($ws->{floating_nodes}->[0]->{scratchpad_state}, 'changed', + 'scratchpad_state changed'); +is($scratchrect->{width}, $outputrect->{width} * 0.5 + 10, 'scratch width is 50% + 10px'); + +cmd 'resize shrink width 10 px'; +cmd 'scratchpad show'; ################################################################################ -# 6: Verify that repeated 'scratchpad show' cycle through the stack, that is, +# 7: Verify that repeated 'scratchpad show' cycle through the stack, that is, # toggling a visible window should insert it at the bottom of the stack of the # __i3_scratch workspace. ################################################################################ @@ -400,6 +422,53 @@ $second = fresh_workspace; verify_scratchpad_move_with_visible_scratch_con($first, $second, 0); does_i3_live; + +################################################################################ +# 13: Test whether scratchpad show moves focus to the scratchpad window +# when another window on the same workspace has focus +################################################################################ + +clear_scratchpad; +my $ws = fresh_workspace; + +open_window; +my $scratch = get_focused($ws); +cmd 'move scratchpad'; +cmd 'scratchpad show'; + +open_window; +my $not_scratch = get_focused($ws); +is(get_focused($ws), $not_scratch, 'not scratch window has focus'); + +cmd 'scratchpad show'; + +is(get_focused($ws), $scratch, 'scratchpad is focused'); + # 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;