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->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)
{

View File

@ -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 */

View File

@ -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;