summaryrefslogtreecommitdiff
path: root/src/client.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/client.cc')
-rw-r--r--src/client.cc22
1 files changed, 22 insertions, 0 deletions
diff --git a/src/client.cc b/src/client.cc
index 38364432..2461eff9 100644
--- a/src/client.cc
+++ b/src/client.cc
@@ -1002,4 +1002,26 @@ void OBClient::destroyHandler(const XDestroyWindowEvent &e)
}
+void OBClient::reparentHandler(const XReparentEvent &e)
+{
+#ifdef DEBUG
+ printf("ReparentNotify for 0x%lx\n", e.window);
+#endif // DEBUG
+
+ OtkEventHandler::reparentHandler(e);
+
+ // this is when the client is first taken captive in the frame
+ if (e.parent == frame->plate()) return;
+
+ /*
+ This event is quite rare and is usually handled in unmapHandler.
+ However, if the window is unmapped when the reparent event occurs,
+ the window manager never sees it because an unmap event is not sent
+ to an already unmapped window.
+ */
+
+ // this deletes us etc
+ Openbox::instance->screen(_screen)->unmanageWindow(this);
+}
+
}