all repos — openbox @ bb97a20777e74d681e5f1912f5b243f19253600b

openbox fork - make it a bit more like ryudo

don't use XPutBackEvent and mess up timestamp order in the event queue
Dana Jansens danakj@orodu.net
commit

bb97a20777e74d681e5f1912f5b243f19253600b

parent

72fe65fd2284e2f592e71c33d50dd3b7bc9ea569

1 files changed, 8 insertions(+), 4 deletions(-)

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

@@ -146,6 +146,13 @@

if (children) XFree(children); } +static Bool check_unmap(Display *d, XEvent *e, XPointer arg) +{ + const Window win = *(Window*)arg; + return ((e->type == DestroyNotify && e->xdestroywindow.window == win) || + (e->type == UnmapNotify && e->xunmap.window == win)); +} + void window_manage(Window win) { XEvent e;

@@ -158,10 +165,7 @@ grab_server(TRUE);

/* 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(obt_display, win, DestroyNotify, &e) || - XCheckTypedWindowEvent(obt_display, win, UnmapNotify, &e)) - { - XPutBackEvent(obt_display, &e); + if (XCheckIfEvent(obt_display, &e, check_unmap, (XPointer)&win)) { ob_debug("Trying to manage unmapped window. Aborting that."); no_manage = TRUE; }