From 695c49a765223f23d80b168336f8fc716e09a14b Mon Sep 17 00:00:00 2001 From: Carsten Haitzler Date: Thu, 12 May 2005 03:32:48 +0000 Subject: [PATCH] fix unmapped client windows that are still managed... (eg xmms playlist) SVN revision: 14716 --- src/bin/e_border.c | 4 +++- src/bin/e_border.h | 1 + src/bin/e_container.c | 1 - src/bin/e_desk.c | 3 ++- 4 files changed, 6 insertions(+), 3 deletions(-) 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);