From: Dana Jansens Date: Tue, 7 Jan 2003 20:21:42 +0000 (+0000) Subject: don't reparent to root if the client has already reparented since unmapping X-Git-Url: https://git.brokenzipper.com/gitweb?a=commitdiff_plain;h=cc36ecf2f2ba827081669512dc304c71b2169a83;p=chaz%2Fopenbox don't reparent to root if the client has already reparented since unmapping --- diff --git a/src/frame.cc b/src/frame.cc index ac631d01..3b9cb968 100644 --- a/src/frame.cc +++ b/src/frame.cc @@ -429,13 +429,18 @@ void OBFrame::grabClient() void OBFrame::releaseClient() { - // XXX: check for a reparent before reparenting? - - // according to the ICCCM - if the client doesn't reparent to - // root, then we have to do it for them - XReparentWindow(otk::OBDisplay::display, _client->window(), - _screen->rootWindow(), - _client->area().x(), _client->area().y()); + // check if the app has already reparented its window away + XEvent ev; + if (XCheckTypedWindowEvent(otk::OBDisplay::display, _client->window(), + ReparentNotify, &ev)) { + XPutBack(otk::OBDisplay::display, &ev); + } else { + // according to the ICCCM - if the client doesn't reparent itself, then we + // will reparent the window to root for them + XReparentWindow(otk::OBDisplay::display, _client->window(), + _screen->rootWindow(), + _client->area().x(), _client->area().y()); + } }