From 834952304f47e6fe762723d24117e7ee1bbd9a97 Mon Sep 17 00:00:00 2001 From: Carsten Haitzler Date: Mon, 23 Mar 2009 13:39:24 +0000 Subject: [PATCH] ghost windows-- ? SVN revision: 39655 --- src/bin/e_border.c | 11 ++++++++++- src/bin/e_manager.c | 1 + src/bin/e_win.c | 1 + 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/src/bin/e_border.c b/src/bin/e_border.c index b3d358433..7d4320076 100644 --- a/src/bin/e_border.c +++ b/src/bin/e_border.c @@ -467,7 +467,8 @@ e_border_new(E_Container *con, Ecore_X_Window win, int first_map, int internal) bd->y = att->y; bd->changes.pos = 1; bd->re_manage = 1; - bd->ignore_first_unmap = 2; +// needed to be 1 for internal windw and on restart. +// bd->ignore_first_unmap = 2; } /* just to friggin make java happy - we're DELAYING the reparent until @@ -3902,10 +3903,13 @@ _e_border_cb_window_hide(void *data, int ev_type, void *ev) bd = data; e = ev; +// printf("HIDE: %x, event %x\n", e->win, e->event_win); // not interested in hide events from windows other than the window in question if (e->win != e->event_win) return 1; bd = e_border_find_by_client_window(e->win); +// printf(" bd = %p\n", bd); if (!bd) return 1; +// printf(" bd->ignore_first_unmap = %i\n", bd->ignore_first_unmap); if (bd->ignore_first_unmap > 0) { bd->ignore_first_unmap--; @@ -3915,18 +3919,23 @@ _e_border_cb_window_hide(void *data, int ev_type, void *ev) if ((bd->iconic) || ((!bd->visible) && (!bd->new_client)) || (bd->await_hide_event > 0)) { +// printf(" Don't delete hidden or iconified windows\n"); +// printf(" bd->iconic = %i, bd->visible = %i, bd->new_client = %i, bd->await_hide_event = %i\n", +// bd->iconic, bd->visible, bd->new_client, bd->await_hide_event); if (bd->await_hide_event > 0) { bd->await_hide_event--; } else { +// printf(" hide really\n"); /* Only hide the border if it is visible */ if (bd->visible) e_border_hide(bd, 1); } } else { +// printf(" hide2\n"); e_border_hide(bd, 0); if (e_config->focus_revert_on_hide_or_close) { diff --git a/src/bin/e_manager.c b/src/bin/e_manager.c index 8f1dd513b..2b7585475 100644 --- a/src/bin/e_manager.c +++ b/src/bin/e_manager.c @@ -280,6 +280,7 @@ e_manager_manage_windows(E_Manager *man) bd = e_border_new(con, windows[i], 1, 0); if (bd) { + bd->ignore_first_unmap = 1; /* FIXME: * It's enough to set the desk, the zone will * be set according to the desk */ diff --git a/src/bin/e_win.c b/src/bin/e_win.c index 31dec7fde..fef2ec886 100644 --- a/src/bin/e_win.c +++ b/src/bin/e_win.c @@ -90,6 +90,7 @@ e_win_show(E_Win *win) _e_win_prop_update(win); ecore_evas_lower(win->ecore_evas); win->border = e_border_new(win->container, win->evas_win, 1, 1); + win->border->ignore_first_unmap = 1; if (!win->placed) win->border->re_manage = 0; win->border->internal = 1;