diff --git a/src/bin/e_border.c b/src/bin/e_border.c index ec8b35b58..deab7c6aa 100644 --- a/src/bin/e_border.c +++ b/src/bin/e_border.c @@ -421,7 +421,8 @@ e_border_show(E_Border *bd) e_hints_window_visible_set(bd); bd->visible = 1; bd->changes.visible = 1; - + bd->hidden = 0; + visible = 1; ecore_x_window_prop_card32_set(bd->client.win, E_ATOM_MAPPED, &visible, 1); ecore_x_window_prop_card32_set(bd->client.win, E_ATOM_MANAGED, &visible, 1); @@ -1482,6 +1483,7 @@ _e_border_cb_window_hide(void *data, int ev_type, void *ev) e_object_del(E_OBJECT(bd)); } #endif + if (bd->visible) bd->hidden = 1; e_border_hide(bd, 1); return 1; } diff --git a/src/bin/e_border.h b/src/bin/e_border.h index 00955482d..3d25975ad 100644 --- a/src/bin/e_border.h +++ b/src/bin/e_border.h @@ -186,6 +186,7 @@ struct _E_Border unsigned char iconic : 1; unsigned char sticky : 1; unsigned char shaped : 1; + unsigned char hidden : 1; unsigned char need_shape_merge : 1; unsigned char need_shape_export : 1; unsigned char fullscreen : 1; diff --git a/src/bin/e_container.c b/src/bin/e_container.c index 5541704d5..cf2478c41 100644 --- a/src/bin/e_container.c +++ b/src/bin/e_container.c @@ -185,7 +185,6 @@ e_container_hide(E_Container *con) ecore_evas_hide(con->bg_ecore_evas); if (con->win != con->manager->win) ecore_x_window_hide(con->win); - ecore_x_icccm_state_set(con->bg_win, ECORE_X_WINDOW_STATE_HINT_WITHDRAWN); con->visible = 0; } diff --git a/src/bin/e_desk.c b/src/bin/e_desk.c index a6807a5c2..83406def3 100644 --- a/src/bin/e_desk.c +++ b/src/bin/e_desk.c @@ -70,7 +70,8 @@ e_desk_show(E_Desk *desk) { E_Border *bd = l->data; - if (bd->desk->zone == desk->zone && !bd->iconic) + if ((bd->desk->zone == desk->zone) && (!bd->iconic) && + (!bd->hidden)) { if ((bd->desk == desk) || (bd->sticky)) e_border_show(bd);