i think im handling reparent events correctly now, by unmanaging the window and then XMapping the client
Dana Jansens danakj@orodu.net
2 files changed,
12 insertions(+),
2 deletions(-)
M
src/client.cc
→
src/client.cc
@@ -1269,6 +1269,12 @@ the window manager never sees it because an unmap event is not sent
to an already unmapped window. */ + // put another copy of this event on the stack (for the frame reparent + // process) + XEvent ev; + ev.xreparent = e; + XPutBackEvent(otk::OBDisplay::display, &ev); + // this deletes us etc Openbox::instance->screen(_screen)->unmanageWindow(this); }
M
src/frame.cc
→
src/frame.cc
@@ -436,8 +436,12 @@ // check if the app has already reparented its window to the root window
XEvent ev; if (XCheckTypedWindowEvent(otk::OBDisplay::display, _client->window(), ReparentNotify, &ev)) { - // XXX: ob2/bb didn't do this.. look up this process in other wm's! - //XPutBackEvent(otk::OBDisplay::display, &ev); + /* + If the app reparented itself, then we unmanage the window. This causes + the window to be unmapped, so to be nice to it, we remap the window + here. We don't put the event back onto the stack because we put it there + in the first place. + */ XMapWindow(otk::OBDisplay::display, _client->window()); } else { // according to the ICCCM - if the client doesn't reparent to