ghost windows-- ?

SVN revision: 39655
This commit is contained in:
Carsten Haitzler 2009-03-23 13:39:24 +00:00
parent 7657cb3644
commit 834952304f
3 changed files with 12 additions and 1 deletions

View File

@ -467,7 +467,8 @@ e_border_new(E_Container *con, Ecore_X_Window win, int first_map, int internal)
bd->y = att->y; bd->y = att->y;
bd->changes.pos = 1; bd->changes.pos = 1;
bd->re_manage = 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 /* 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; bd = data;
e = ev; 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 // not interested in hide events from windows other than the window in question
if (e->win != e->event_win) return 1; if (e->win != e->event_win) return 1;
bd = e_border_find_by_client_window(e->win); bd = e_border_find_by_client_window(e->win);
// printf(" bd = %p\n", bd);
if (!bd) return 1; if (!bd) return 1;
// printf(" bd->ignore_first_unmap = %i\n", bd->ignore_first_unmap);
if (bd->ignore_first_unmap > 0) if (bd->ignore_first_unmap > 0)
{ {
bd->ignore_first_unmap--; 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)) || if ((bd->iconic) || ((!bd->visible) && (!bd->new_client)) ||
(bd->await_hide_event > 0)) (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) if (bd->await_hide_event > 0)
{ {
bd->await_hide_event--; bd->await_hide_event--;
} }
else else
{ {
// printf(" hide really\n");
/* Only hide the border if it is visible */ /* Only hide the border if it is visible */
if (bd->visible) e_border_hide(bd, 1); if (bd->visible) e_border_hide(bd, 1);
} }
} }
else else
{ {
// printf(" hide2\n");
e_border_hide(bd, 0); e_border_hide(bd, 0);
if (e_config->focus_revert_on_hide_or_close) if (e_config->focus_revert_on_hide_or_close)
{ {

View File

@ -280,6 +280,7 @@ e_manager_manage_windows(E_Manager *man)
bd = e_border_new(con, windows[i], 1, 0); bd = e_border_new(con, windows[i], 1, 0);
if (bd) if (bd)
{ {
bd->ignore_first_unmap = 1;
/* FIXME: /* FIXME:
* It's enough to set the desk, the zone will * It's enough to set the desk, the zone will
* be set according to the desk */ * be set according to the desk */

View File

@ -90,6 +90,7 @@ e_win_show(E_Win *win)
_e_win_prop_update(win); _e_win_prop_update(win);
ecore_evas_lower(win->ecore_evas); ecore_evas_lower(win->ecore_evas);
win->border = e_border_new(win->container, win->evas_win, 1, 1); win->border = e_border_new(win->container, win->evas_win, 1, 1);
win->border->ignore_first_unmap = 1;
if (!win->placed) if (!win->placed)
win->border->re_manage = 0; win->border->re_manage = 0;
win->border->internal = 1; win->border->internal = 1;