e_hints_window_visible_set(bd);
bd->visible = 1;
bd->changes.visible = 1;
-
+
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);
bd->resize_mode = RESIZE_NONE;
_e_border_resize_end(bd);
}
-
+
e_container_shape_hide(bd->shape);
/* FIXME: If the client unmaps itself, the border should be
* withdrawn, not iconic */
if (e_config->focus_revert_on_hide_or_close)
e_desk_last_focused_focus(bd->desk);
}
+ if (manage)
+ {
+ /* Make sure that this border isn't deleted */
+ bd->await_hide_event++;
+ }
ecore_x_window_hide(bd->client.win);
}
return 1;
}
/* Don't delete hidden or iconified windows */
- if ((bd->iconic) || (!bd->visible))
+ if ((bd->iconic) || (!bd->visible) || (bd->await_hide_event))
{
- e_border_hide(bd, 1);
+ if (bd->await_hide_event)
+ bd->await_hide_event--;
+ /* Only hide the border if it is visible */
+ if (bd->visible)
+ e_border_hide(bd, 1);
}
else
{
E_Container_Shape *shape;
unsigned int visible : 1;
+ unsigned int await_hide_event;
unsigned int moving : 1;
unsigned int focused : 1;
unsigned int new_client : 1;