From 212d966bdeae31876ad66deef3d5429ab5ef8a6d Mon Sep 17 00:00:00 2001 From: xcomputerman Date: Wed, 5 Jan 2005 09:31:56 +0000 Subject: [PATCH] - Fix virtual desktop switching bug - don't delete hidden borders - Fix ICCCM state bug for iconified windows - Show borders in correct stacking order on desktop switch SVN revision: 12777 --- src/bin/e_border.c | 5 +++-- src/bin/e_desk.c | 17 ++++++++++++----- 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/src/bin/e_border.c b/src/bin/e_border.c index c511176ef..e615342d2 100644 --- a/src/bin/e_border.c +++ b/src/bin/e_border.c @@ -266,7 +266,7 @@ e_border_hide(E_Border *bd) e_container_shape_hide(bd->shape); if (bd->iconic) - ecore_x_icccm_state_set(bd->client.win, ECORE_X_WINDOW_STATE_HINT_WITHDRAWN); + ecore_x_icccm_state_set(bd->client.win, ECORE_X_WINDOW_STATE_HINT_ICONIC); else ecore_x_icccm_state_set(bd->client.win, ECORE_X_WINDOW_STATE_HINT_WITHDRAWN); @@ -729,7 +729,8 @@ _e_border_cb_window_hide(void *data, int ev_type, void *ev) bd->ignore_first_unmap--; return 1; } - if (!(bd->iconic)) e_object_del(E_OBJECT(bd)); + /* Don't delete hidden or iconified windows */ + if (!(bd->iconic) && (bd->visible)) e_object_del(E_OBJECT(bd)); return 1; } diff --git a/src/bin/e_desk.c b/src/bin/e_desk.c index e829b4070..2f1f13633 100644 --- a/src/bin/e_desk.c +++ b/src/bin/e_desk.c @@ -49,14 +49,21 @@ e_desk_show(E_Desk *desk) E_OBJECT_CHECK(desk); if (desk->visible) return; - for (l = desk->zone->clients; l; l = l->next) + for (l = desk->zone->container->clients; l; l = l->next) { E_Border *bd = l->data; - if (bd->desk == desk) - e_border_show(bd); - else - e_border_hide(bd); + if (bd->desk->zone == desk->zone) + { + if (bd->desk == desk) + { + e_border_show(bd); + } + else + { + e_border_hide(bd); + } + } } for (l = desk->zone->desks; l; l = l->next)