]> git.sur5r.net Git - i3/i3/commitdiff
Merge branch 'master' into next
authorMichael Stapelberg <michael@stapelberg.de>
Sat, 7 Jan 2012 18:21:12 +0000 (18:21 +0000)
committerMichael Stapelberg <michael@stapelberg.de>
Sat, 7 Jan 2012 18:21:12 +0000 (18:21 +0000)
Conflicts:
src/con.c

1  2 
src/con.c
testcases/t/156-fullscreen-focus.t

diff --cc src/con.c
index 799148ef706b33e25d6402b18a4af50d38757645,bf22be846ebda1cfbb414e0fb60705874766d3a3..f90d569f61c09717396705470c51cc46443b7a3b
+++ b/src/con.c
@@@ -656,8 -656,9 +656,11 @@@ void con_move_to_workspace(Con *con, Co
      con_fix_percent(next);
  
      /* 7: focus the con on the target workspace (the X focus is only updated by
-      * calling tree_render(), so for the "real" focus this is a no-op). */
-     if (workspace->name[0] != '_' || workspace->name[1] != '_')
+      * calling tree_render(), so for the "real" focus this is a no-op).
 -     * We don’t focus when there is a fullscreen con on that workspace. */
 -    if (con_get_fullscreen_con(workspace, CF_OUTPUT) == NULL)
++     * We don’t focus the con for i3 pseudo workspaces like __i3_scratch and
++     * we don’t focus when there is a fullscreen con on that workspace. */
++    if ((workspace->name[0] != '_' || workspace->name[1] != '_') &&
++        con_get_fullscreen_con(workspace, CF_OUTPUT) == NULL)
          con_focus(con_descend_focused(con));
  
      /* 8: when moving to a visible workspace on a different output, we keep the
index c7646e417e7c760c11fdf68c717ea41ced67ee65,3f08effd4bf152292e22510a9aa55147de509d97..08de5ed1c396c16e700460d7ab490b2db932f741
@@@ -57,6 -63,35 +57,32 @@@ my $tmp2 = get_unused_workspace
  cmd "move workspace $tmp2";
  
  # verify that the third window has the focus
 -
 -sync_with_i3($x);
 -
  is($x->input_focus, $third->id, 'third window focused');
  
+ ################################################################################
+ # Ensure that moving a window to a workspace which has a fullscreen window does
+ # not focus it (otherwise the user cannot get out of fullscreen mode anymore).
+ ################################################################################
+ $tmp = fresh_workspace;
+ my $fullscreen_window = open_window;
+ cmd 'fullscreen';
+ my $nodes = get_ws_content($tmp);
+ is(scalar @$nodes, 1, 'precisely one window');
+ is($nodes->[0]->{focused}, 1, 'fullscreen window focused');
+ my $old_id = $nodes->[0]->{id};
+ $tmp2 = fresh_workspace;
+ my $move_window = open_window;
+ cmd "move workspace $tmp";
+ cmd "workspace $tmp";
+ $nodes = get_ws_content($tmp);
+ is(scalar @$nodes, 2, 'precisely two windows');
+ is($nodes->[0]->{id}, $old_id, 'id unchanged');
+ is($nodes->[0]->{focused}, 1, 'fullscreen window focused');
  done_testing;