summaryrefslogtreecommitdiff
path: root/src/desktop/Window.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/desktop/Window.cpp')
-rw-r--r--src/desktop/Window.cpp19
1 files changed, 12 insertions, 7 deletions
diff --git a/src/desktop/Window.cpp b/src/desktop/Window.cpp
index fbf63243..8671c003 100644
--- a/src/desktop/Window.cpp
+++ b/src/desktop/Window.cpp
@@ -1927,13 +1927,18 @@ SP<CWLSurfaceResource> CWindow::getSolitaryResource() {
if (res->m_subsurfaces.size() == 0)
return res;
- if (res->m_subsurfaces.size() == 1) {
- if (res->m_subsurfaces[0].expired() || res->m_subsurfaces[0]->m_surface.expired())
- return nullptr;
- auto surf = res->m_subsurfaces[0]->m_surface.lock();
- if (!surf || surf->m_subsurfaces.size() != 0 || surf->extends() != res->extends() || !surf->m_current.texture || !surf->m_current.texture->m_opaque)
- return nullptr;
- return surf;
+ if (res->m_subsurfaces.size() >= 1) {
+ if (!res->hasVisibleSubsurface())
+ return res;
+
+ if (res->m_subsurfaces.size() == 1) {
+ if (res->m_subsurfaces[0].expired() || res->m_subsurfaces[0]->m_surface.expired())
+ return nullptr;
+ auto surf = res->m_subsurfaces[0]->m_surface.lock();
+ if (!surf || surf->m_subsurfaces.size() != 0 || surf->extends() != res->extends() || !surf->m_current.texture || !surf->m_current.texture->m_opaque)
+ return nullptr;
+ return surf;
+ }
}
return nullptr;