all repos — openbox @ c9233ddb23ee71de0e1fde8eb031d241cbaec8ef

openbox fork - make it a bit more like ryudo

unmap and map the client window when the frame is hidden/shown
Dana Jansens danakj@orodu.net
commit

c9233ddb23ee71de0e1fde8eb031d241cbaec8ef

parent

37c9f2d96162aaf96c68fb2ef4cc48bca8a875fc

2 files changed, 8 insertions(+), 12 deletions(-)

jump to
M openbox/client.copenbox/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.copenbox/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); } }