Check previous border's zone before setting focus.

SVN revision: 48154
This commit is contained in:
Christopher Michael 2010-04-20 00:10:10 +00:00
parent b27bad5c9a
commit aaffb12f22
1 changed files with 10 additions and 4 deletions

View File

@ -176,6 +176,7 @@ _policy_border_hide_below(E_Border *bd)
static void
_policy_border_show_below(E_Border *bd)
{
Eina_List *l;
E_Border *prev;
int pos = 0, i;
@ -202,7 +203,6 @@ _policy_border_show_below(E_Border *bd)
/* Find the windows below this one */
for (i = pos; i >= 2; i--)
{
Eina_List *l;
E_Border *b;
EINA_LIST_REVERSE_FOREACH(bd->zone->container->layers[i].clients, l, b)
@ -239,9 +239,15 @@ _policy_border_show_below(E_Border *bd)
/* if we reach here, then there is a problem with showing a window below
* this one, so show previous window in stack */
prev = eina_list_data_get(eina_list_last(_pol_focus_stack));
if (prev) _policy_border_set_focus(prev);
else _policy_focus_home(bd->zone);
EINA_LIST_REVERSE_FOREACH(_pol_focus_stack, l, prev)
{
if (prev->zone != bd->zone) continue;
_policy_border_set_focus(prev);
return;
}
/* Fallback to focusing home if all above fails */
_policy_focus_home(bd->zone);
}
static void