unmap and map the client window when the frame is hidden/shown
Dana Jansens danakj@orodu.net
2 files changed,
8 insertions(+),
12 deletions(-)
M
openbox/client.c
→
openbox/client.c
@@ -493,10 +493,9 @@ PROP_ERASE(self->window, net_wm_desktop);
PROP_ERASE(self->window, net_wm_state); PROP_ERASE(self->window, wm_state); } else { - /* if we're left in an iconic state, the client wont be mapped. this is - bad, since we will no longer be managing the window on restart */ - if (self->iconic) - XMapWindow(ob_display, self->window); + /* if we're left in an unmapped state, the client wont be mapped. this + is bad, since we will no longer be managing the window on restart */ + XMapWindow(ob_display, self->window); }@@ -2203,11 +2202,6 @@ if (old != self->wmstate)
PROP_MSG(self->window, kde_wm_change_state, self->wmstate, 1, 0, 0); - self->ignore_unmaps++; - /* we unmap the client itself so that we can get MapRequest - events, and because the ICCCM tells us to! */ - XUnmapWindow(ob_display, self->window); - /* update the focus lists.. iconic windows go to the bottom of the list, put the new iconic window at the 'top of the bottom'. */@@ -2226,8 +2220,6 @@ self->wmstate = self->shaded ? IconicState : NormalState;
if (old != self->wmstate) PROP_MSG(self->window, kde_wm_change_state, self->wmstate, 1, 0, 0); - - XMapWindow(ob_display, self->window); /* this puts it after the current focused window */ focus_order_remove(self);
M
openbox/frame.c
→
openbox/frame.c
@@ -189,6 +189,7 @@ void frame_show(ObFrame *self)
{ if (!self->visible) { self->visible = TRUE; + XMapWindow(ob_display, self->client->window); XMapWindow(ob_display, self->window); } }@@ -197,8 +198,11 @@ void frame_hide(ObFrame *self)
{ if (self->visible) { self->visible = FALSE; - self->client->ignore_unmaps++; + self->client->ignore_unmaps += 2; + /* we unmap the client itself so that we can get MapRequest + events, and because the ICCCM tells us to! */ XUnmapWindow(ob_display, self->window); + XUnmapWindow(ob_display, self->client->window); } }