i think im handling reparent events correctly now, by unmanaging the window and then XMapping the client
This commit is contained in:
parent
e5eb783aa2
commit
1b13d34c1e
2 changed files with 12 additions and 2 deletions
|
@ -1269,6 +1269,12 @@ void OBClient::reparentHandler(const XReparentEvent &e)
|
||||||
to an already unmapped window.
|
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
|
// this deletes us etc
|
||||||
Openbox::instance->screen(_screen)->unmanageWindow(this);
|
Openbox::instance->screen(_screen)->unmanageWindow(this);
|
||||||
}
|
}
|
||||||
|
|
|
@ -436,8 +436,12 @@ void OBFrame::releaseClient()
|
||||||
XEvent ev;
|
XEvent ev;
|
||||||
if (XCheckTypedWindowEvent(otk::OBDisplay::display, _client->window(),
|
if (XCheckTypedWindowEvent(otk::OBDisplay::display, _client->window(),
|
||||||
ReparentNotify, &ev)) {
|
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());
|
XMapWindow(otk::OBDisplay::display, _client->window());
|
||||||
} else {
|
} else {
|
||||||
// according to the ICCCM - if the client doesn't reparent to
|
// according to the ICCCM - if the client doesn't reparent to
|
||||||
|
|
Loading…
Reference in a new issue