e: Fix fullscreen and focus

iconifying fullscreen windows during focus change seems to be a bad
idea, as it triggers new focus events.

- Make window fullscreen
- Alt+Tab to new window
- Alt+Tab back
-> Window is still iconified
Can only get fullscreen window back by doing uniconify

Also switching desktops will result in a iconified window which the user
must hunt down (ticket #1550).

This should fix those issues.

SVN revision: 77259
This commit is contained in:
Sebastian Dransfeld 2012-10-01 10:15:09 +00:00
parent 99f7820770
commit f2b9c969af
2 changed files with 14 additions and 3 deletions

View File

@ -2197,6 +2197,11 @@ e_border_focus_set(E_Border *bd,
e_grabinput_focus(bd->client.win, E_FOCUS_METHOD_PASSIVE);
/* e_border_focus_set(bd, 1, 0); */
}
if (bd->was_fullscreen)
{
bd->need_fullscreen = 1;
bd->was_fullscreen = 0;
}
return;
}
@ -2235,7 +2240,8 @@ e_border_focus_set(E_Border *bd,
if ((!unfocus_is_parent) &&
(!e_config->allow_above_fullscreen))
{
e_border_iconify(bd2);
e_border_unfullscreen(bd2);
bd2->was_fullscreen = 1;
}
}
}
@ -2296,7 +2302,10 @@ e_border_focus_set(E_Border *bd,
}
if ((!have_vis_child) &&
(!e_config->allow_above_fullscreen))
e_border_iconify(bd);
{
e_border_unfullscreen(bd);
bd->was_fullscreen = 1;
}
}
}
}
@ -2345,7 +2354,8 @@ e_border_focus_set(E_Border *bd,
}
if ((!unfocus_is_parent) && (!e_config->allow_above_fullscreen))
{
e_border_iconify(bd_unfocus);
e_border_unfullscreen(bd_unfocus);
bd_unfocus->was_fullscreen = 1;
}
}
}

View File

@ -490,6 +490,7 @@ struct _E_Border
unsigned int need_shape_merge : 1;
unsigned int need_shape_export : 1;
unsigned int fullscreen : 1;
unsigned int was_fullscreen : 1;
unsigned int need_fullscreen : 1;
unsigned int already_unparented : 1;
unsigned int need_reparent : 1;