Bugfix: Disallow focusing other windows when in fullscreen mode (Thanks aksr)

Fixes: #579
This commit is contained in:
Michael Stapelberg 2011-12-17 15:21:43 +00:00
parent d972704205
commit 1ff321bc3f
2 changed files with 46 additions and 0 deletions

View File

@ -436,6 +436,13 @@ restart:
focus:
TOK_FOCUS
{
if (focused &&
focused->type != CT_WORKSPACE &&
focused->fullscreen_mode != CF_NONE) {
LOG("Cannot change focus while in fullscreen mode.\n");
break;
}
owindow *current;
if (match_is_empty(&current_match)) {
@ -486,6 +493,13 @@ focus:
}
| TOK_FOCUS direction
{
if (focused &&
focused->type != CT_WORKSPACE &&
focused->fullscreen_mode != CF_NONE) {
LOG("Cannot change focus while in fullscreen mode.\n");
break;
}
int direction = $2;
switch (direction) {
case TOK_LEFT:
@ -513,6 +527,13 @@ focus:
}
| TOK_FOCUS window_mode
{
if (focused &&
focused->type != CT_WORKSPACE &&
focused->fullscreen_mode != CF_NONE) {
LOG("Cannot change focus while in fullscreen mode.\n");
break;
}
printf("should focus: ");
if ($2 == TOK_TILING)
@ -545,6 +566,13 @@ focus:
}
| TOK_FOCUS level
{
if (focused &&
focused->type != CT_WORKSPACE &&
focused->fullscreen_mode != CF_NONE) {
LOG("Cannot change focus while in fullscreen mode.\n");
break;
}
if ($2 == TOK_PARENT)
level_up();
else level_down();

View File

@ -169,4 +169,22 @@ is(fullscreen_windows(), 0, 'amount of fullscreen windows after fullscreen comma
# clean up the workspace so that it will be cleaned when switching away
cmd 'kill' for (@{get_ws_content($tmp)});
################################################################################
# Verify that changing focus while in fullscreen does not work.
################################################################################
$tmp = fresh_workspace;
my $other = open_window;
is($x->input_focus, $other->id, 'other window focused');
$window = open_window;
is($x->input_focus, $window->id, 'window focused');
cmd 'fullscreen';
is($x->input_focus, $window->id, 'fullscreen window focused');
cmd 'focus left';
is($x->input_focus, $window->id, 'fullscreen window still focused');
done_testing;