add "hidden" flag for borders which is set only when border_hide(3) is called; this prevents borders from being automatically shown on desk change when previously hidden

SVN revision: 75757
This commit is contained in:
Mike Blumenkrantz 2012-08-28 07:41:11 +00:00
parent 1e724ce41f
commit 0dab993c45
3 changed files with 9 additions and 5 deletions

View File

@ -958,6 +958,7 @@ e_border_show(E_Border *bd)
if (!bd->need_reparent)
ecore_x_window_show(bd->client.win);
e_hints_window_visible_set(bd);
bd->hidden = 0;
bd->visible = 1;
bd->changes.visible = 1;
@ -1033,13 +1034,15 @@ e_border_hide(E_Border *bd,
}
}
}
if (manage == 1)
switch (manage)
{
case 2: break;
case 3:
bd->hidden = 1;
case 1:
/* Make sure that this border isn't deleted */
bd->await_hide_event++;
}
if (manage != 2)
{
default:
if (!e_manager_comp_evas_get(bd->zone->container->manager))
ecore_x_window_hide(bd->client.win);
}

View File

@ -462,6 +462,7 @@ struct _E_Border
E_Container_Shape *shape;
unsigned int visible : 1;
Eina_Bool hidden : 1; // set when window has been hidden by api and should not be shown
unsigned int await_hide_event;
unsigned int moving : 1;
unsigned int focused : 1;

View File

@ -270,7 +270,7 @@ e_desk_show(E_Desk *desk)
bl = e_container_border_list_first(desk->zone->container);
while ((bd = e_container_border_list_next(bl)))
{
if ((bd->desk->zone == desk->zone) && (!bd->iconic))
if ((!bd->hidden) && (bd->desk->zone == desk->zone) && (!bd->iconic))
{
if ((bd->desk == desk) || (bd->sticky))
e_border_show(bd);