fix restart with hidden windows

SVN revision: 14723
This commit is contained in:
Carsten Haitzler 2005-05-12 08:50:53 +00:00
parent af12df4ab4
commit 787278d6c8
4 changed files with 27 additions and 11 deletions

View File

@ -10,6 +10,7 @@ Ecore_X_Atom E_ATOM_ZONE = 0;
Ecore_X_Atom E_ATOM_DESK = 0;
Ecore_X_Atom E_ATOM_MAPPED = 0;
Ecore_X_Atom E_ATOM_SHADE_DIRECTION = 0;
Ecore_X_Atom E_ATOM_HIDDEN = 0;
/* externally accessible functions */
int
@ -21,6 +22,7 @@ e_atoms_init(void)
E_ATOM_DESK = ecore_x_atom_get("__E_WINDOW_DESK");
E_ATOM_MAPPED = ecore_x_atom_get("__E_WINDOW_MAPPED");
E_ATOM_SHADE_DIRECTION = ecore_x_atom_get("__E_WINDOW_SHADE_DIRECTION");
E_ATOM_HIDDEN = ecore_x_atom_get("__E_WINDOW_HIDDEN");
return 1;
}

View File

@ -15,6 +15,7 @@ extern EAPI Ecore_X_Atom E_ATOM_ZONE;
extern EAPI Ecore_X_Atom E_ATOM_DESK;
extern EAPI Ecore_X_Atom E_ATOM_MAPPED;
extern EAPI Ecore_X_Atom E_ATOM_SHADE_DIRECTION;
extern EAPI Ecore_X_Atom E_ATOM_HIDDEN;
EAPI int e_atoms_init(void);
EAPI int e_atoms_shutdown(void);

View File

@ -412,6 +412,7 @@ e_border_show(E_Border *bd)
{
E_Event_Border_Show *ev;
unsigned int visible;
unsigned int hidden;
E_OBJECT_CHECK(bd);
E_OBJECT_TYPE_CHECK(bd, E_BORDER_TYPE);
@ -426,6 +427,8 @@ e_border_show(E_Border *bd)
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);
hidden = 0;
ecore_x_window_prop_card32_set(bd->client.win, E_ATOM_HIDDEN, &hidden, 1);
ev = calloc(1, sizeof(E_Event_Border_Show));
ev->border = bd;
@ -1483,7 +1486,14 @@ _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;
if (bd->visible)
{
unsigned int hidden;
bd->hidden = 1;
hidden = 1;
ecore_x_window_prop_card32_set(bd->client.win, E_ATOM_HIDDEN, &hidden, 1);
}
e_border_hide(bd, 1);
return 1;
}

View File

@ -156,17 +156,20 @@ e_manager_manage_windows(E_Manager *man)
deskxy[0],
deskxy[1]);
bd = e_border_new(con, windows[i], 1);
if (bd)
ret = ecore_x_window_prop_card32_get(windows[i],
E_ATOM_HIDDEN,
&ret_val, 1);
if (!((ret == 1) && (ret_val)))
{
/* FIXME:
* It's enough to set the desk, the zone will
* be set according to the desk */
if (zone)
e_border_zone_set(bd, zone);
if (desk)
e_border_desk_set(bd, desk);
bd = e_border_new(con, windows[i], 1);
if (bd)
{
/* FIXME:
* It's enough to set the desk, the zone will
* be set according to the desk */
if (zone) e_border_zone_set(bd, zone);
if (desk) e_border_desk_set(bd, desk);
}
}
}
else if ((att.visible) && (!att.override) &&