all repos — openbox @ 6c5c7fd04b2f9aca24b4ff7ee1db86064dcc63ef

openbox fork - make it a bit more like ryudo

don't manage override_redirect windows.
don't manage windows for whome get attributes fails.
validate the client before managing it.
Dana Jansens danakj@orodu.net
commit

6c5c7fd04b2f9aca24b4ff7ee1db86064dcc63ef

parent

39c6969de2714904dec901c9d3f4e8b0ff01f062

1 files changed, 19 insertions(+), 1 deletions(-)

jump to
M src/screen.ccsrc/screen.cc

@@ -433,16 +433,34 @@ {

Client *client = 0; XWMHints *wmhint; XSetWindowAttributes attrib_set; + XEvent e; + XWindowAttributes attrib; otk::display->grab(); + // check if it has already been unmapped by the time we started mapping + // the grab does a sync so we don't have to here + if (XCheckTypedWindowEvent(**otk::display, window, DestroyNotify, &e) || + XCheckTypedWindowEvent(**otk::display, window, UnmapNotify, &e)) { + XPutBackEvent(**otk::display, &e); + + otk::display->ungrab(); + return; // don't manage it + } + + if (!XGetWindowAttributes(**otk::display, window, &attrib) || + attrib.override_redirect) { + otk::display->ungrab(); + return; // don't manage it + } + // is the window a docking app if ((wmhint = XGetWMHints(**otk::display, window))) { if ((wmhint->flags & StateHint) && wmhint->initial_state == WithdrawnState) { //slit->addClient(w); // XXX: make dock apps work! - otk::display->ungrab(); + otk::display->ungrab(); XFree(wmhint); return; }