diff --git a/src/bin/e_border.c b/src/bin/e_border.c index f2530c756..1783c9c90 100644 --- a/src/bin/e_border.c +++ b/src/bin/e_border.c @@ -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); } diff --git a/src/bin/e_border.h b/src/bin/e_border.h index cd4bb11d2..888094fd1 100644 --- a/src/bin/e_border.h +++ b/src/bin/e_border.h @@ -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; diff --git a/src/bin/e_desk.c b/src/bin/e_desk.c index 79eca6fd4..a5ee25c34 100644 --- a/src/bin/e_desk.c +++ b/src/bin/e_desk.c @@ -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);