all repos — openbox @ 624033c32de25c684d015386fb2d3ae41e36bbb0

openbox fork - make it a bit more like ryudo

support the _KDE_WM_CHANGE_STATE hint
Dana Jansens danakj@orodu.net
commit

624033c32de25c684d015386fb2d3ae41e36bbb0

parent

847a3ef09a72f087269dcb0131db61c7d0f7a117

1 files changed, 25 insertions(+), 2 deletions(-)

jump to
M openbox/client.copenbox/client.c

@@ -2071,7 +2071,14 @@ self->iconic = iconic;

if (iconic) { if (self->functions & OB_CLIENT_FUNC_ICONIFY) { + long old; + + old = self->wmstate; self->wmstate = IconicState; + 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! */

@@ -2085,9 +2092,17 @@

changed = TRUE; } } else { + long old; + if (curdesk) client_set_desktop(self, screen_desktop, FALSE); + + old = self->wmstate; 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 */

@@ -2236,8 +2251,16 @@ shade) || /* can't shade */

self->shaded == shade) return; /* already done */ /* when we're iconic, don't change the wmstate */ - if (!self->iconic) - self->wmstate = shade ? IconicState : NormalState; + if (!self->iconic) { + long old; + + old = self->wmstate; + self->wmstate = shade ? IconicState : NormalState; + if (old != self->wmstate) + PROP_MSG(self->window, kde_wm_change_state, + self->wmstate, 1, 0, 0); + } + self->shaded = shade; client_change_state(self); /* resize the frame to just the titlebar */