]> Dogcows Code - chaz/openbox/commitdiff
i think im handling reparent events correctly now, by unmanaging the window and then...
authorDana Jansens <danakj@orodu.net>
Tue, 7 Jan 2003 20:06:29 +0000 (20:06 +0000)
committerDana Jansens <danakj@orodu.net>
Tue, 7 Jan 2003 20:06:29 +0000 (20:06 +0000)
src/client.cc
src/frame.cc

index d38ca79b0e39a613618b83e8215d17eedc5fdf38..9234a18817060ebc524b6d0d28a3be5fdcf0ba4d 100644 (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);
 }
index 55a0cec0db00bc5c119e580ba838195aa5639cef..6d46d7b948ee6faf28c1e9be17528b10eeab6828 100644 (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
This page took 0.023127 seconds and 4 git commands to generate.