Bugfix: Disallow focusing other windows when in fullscreen mode (Thanks aksr)
Fixes: #579
This commit is contained in:
parent
d972704205
commit
1ff321bc3f
|
@ -436,6 +436,13 @@ restart:
|
||||||
focus:
|
focus:
|
||||||
TOK_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;
|
owindow *current;
|
||||||
|
|
||||||
if (match_is_empty(¤t_match)) {
|
if (match_is_empty(¤t_match)) {
|
||||||
|
@ -486,6 +493,13 @@ focus:
|
||||||
}
|
}
|
||||||
| TOK_FOCUS direction
|
| 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;
|
int direction = $2;
|
||||||
switch (direction) {
|
switch (direction) {
|
||||||
case TOK_LEFT:
|
case TOK_LEFT:
|
||||||
|
@ -513,6 +527,13 @@ focus:
|
||||||
}
|
}
|
||||||
| TOK_FOCUS window_mode
|
| 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: ");
|
printf("should focus: ");
|
||||||
|
|
||||||
if ($2 == TOK_TILING)
|
if ($2 == TOK_TILING)
|
||||||
|
@ -545,6 +566,13 @@ focus:
|
||||||
}
|
}
|
||||||
| TOK_FOCUS level
|
| 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)
|
if ($2 == TOK_PARENT)
|
||||||
level_up();
|
level_up();
|
||||||
else level_down();
|
else level_down();
|
||||||
|
|
|
@ -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
|
# clean up the workspace so that it will be cleaned when switching away
|
||||||
cmd 'kill' for (@{get_ws_content($tmp)});
|
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;
|
done_testing;
|
||||||
|
|
Loading…
Reference in New Issue