i think im handling reparent events correctly now, by unmanaging the window and then XMapping the client

This commit is contained in:
Dana Jansens 2003-01-07 20:06:29 +00:00
parent e5eb783aa2
commit 1b13d34c1e
2 changed files with 12 additions and 2 deletions

View file

@ -1269,6 +1269,12 @@ void OBClient::reparentHandler(const XReparentEvent &e)
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);
}

View file

@ -436,8 +436,12 @@ void OBFrame::releaseClient()
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