summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/xwayland/XWM.cpp7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/xwayland/XWM.cpp b/src/xwayland/XWM.cpp
index dcb22eae..248813bf 100644
--- a/src/xwayland/XWM.cpp
+++ b/src/xwayland/XWM.cpp
@@ -150,10 +150,17 @@ void CXWM::handleUnmapNotify(xcb_unmap_notify_event_t* e) {
}
static bool lookupParentExists(SP<CXWaylandSurface> XSURF, SP<CXWaylandSurface> prospectiveChild) {
+ std::vector<SP<CXWaylandSurface>> visited;
+
while (XSURF->parent) {
if (XSURF->parent == prospectiveChild)
return true;
+ visited.emplace_back(XSURF);
+
XSURF = XSURF->parent.lock();
+
+ if (std::find(visited.begin(), visited.end(), XSURF) != visited.end())
+ return false;
}
return false;