+################################################################################
+# 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');
+
+################################################################################
+# Ensure it's possible to change focus if it doesn't escape the fullscreen
+# container with fullscreen global. We can't even focus a container in a
+# different workspace.
+################################################################################
+
+cmd 'fullscreen';
+
+$tmp = fresh_workspace;
+cmd "workspace $tmp";
+my $diff_ws = open_window;
+
+$tmp2 = fresh_workspace;
+cmd "workspace $tmp2";
+cmd 'split h';
+
+$left = open_window;
+my $right1 = open_window;
+cmd 'split v';
+my $right2 = open_window;
+$nodes = get_ws_content($tmp);
+
+cmd 'focus parent';
+cmd 'fullscreen global';
+
+cmd '[id="' . $right1->id . '"] focus';
+is($x->input_focus, $right1->id, 'upper right window focused');
+
+cmd '[id="' . $right2->id . '"] focus';
+is($x->input_focus, $right2->id, 'bottom right window focused');
+
+cmd '[id="' . $left->id . '"] focus';
+is($x->input_focus, $right2->id, 'prevented focus change to left window');
+
+cmd '[id="' . $diff_ws->id . '"] focus';
+is($x->input_focus, $right2->id, 'prevented focus change to different ws');
+
+################################################################################
+# Same tests when we're in non-global fullscreen mode. We toggle fullscreen on
+# and off to avoid testing whether focus level works in fullscreen for now. It
+# should now be possible to focus a container in a different workspace.
+################################################################################
+
+cmd 'fullscreen global';
+cmd 'fullscreen global';
+
+cmd '[id="' . $right1->id . '"] focus';
+is($x->input_focus, $right1->id, 'upper right window focused');
+
+cmd 'focus parent';
+cmd 'fullscreen';
+
+cmd '[id="' . $right1->id . '"] focus';
+is($x->input_focus, $right1->id, 'upper right window still focused');
+
+cmd '[id="' . $right2->id . '"] focus';
+is($x->input_focus, $right2->id, 'bottom right window focused');
+
+cmd '[id="' . $left->id . '"] focus';
+is($x->input_focus, $right2->id, 'prevented focus change to left window');
+
+cmd '[id="' . $diff_ws->id . '"] focus';
+is($x->input_focus, $diff_ws->id, 'allowed focus change to different ws');
+