diff options
author | vaxerski <[email protected]> | 2022-10-09 17:23:12 +0100 |
---|---|---|
committer | vaxerski <[email protected]> | 2022-10-09 17:40:30 +0100 |
commit | 881f8282501845f57505015e85abbe668bfb740f (patch) | |
tree | 62fab591e9f05f043558529a191d5f2216990fe5 | |
parent | 0743dab3f05667afe187558fe06dcb07ec66c990 (diff) | |
download | Hyprland-881f8282501845f57505015e85abbe668bfb740f.tar.gz Hyprland-881f8282501845f57505015e85abbe668bfb740f.zip |
better subsurface handling on unmaps
-rw-r--r-- | src/helpers/SubsurfaceTree.cpp | 24 |
1 files changed, 14 insertions, 10 deletions
diff --git a/src/helpers/SubsurfaceTree.cpp b/src/helpers/SubsurfaceTree.cpp index a5c7f0a0..349f5090 100644 --- a/src/helpers/SubsurfaceTree.cpp +++ b/src/helpers/SubsurfaceTree.cpp @@ -178,19 +178,23 @@ void Events::listener_unmapSubsurface(void* owner, void* data) { if (subsurface->pChild) { const auto PNODE = subsurface->pChild; - int lx = 0, ly = 0; - addSurfaceGlobalOffset(PNODE, &lx, &ly); + const auto IT = std::find_if(SubsurfaceTree::surfaceTreeNodes.begin(), SubsurfaceTree::surfaceTreeNodes.end(), [&](const SSurfaceTreeNode& other) { return &other == PNODE; }); - wlr_box extents = {lx, ly, 0, 0}; - if (PNODE->pSurface) { - extents.width = PNODE->pSurface->current.width; - extents.height = PNODE->pSurface->current.height; + if (IT != SubsurfaceTree::surfaceTreeNodes.end()) { + int lx = 0, ly = 0; + addSurfaceGlobalOffset(PNODE, &lx, &ly); - g_pHyprRenderer->damageBox(&extents); - } + wlr_box extents = {lx, ly, 0, 0}; + if (PNODE->pSurface) { + extents.width = PNODE->pSurface->current.width; + extents.height = PNODE->pSurface->current.height; - //SubsurfaceTree::destroySurfaceTree(subsurface->pChild); - //subsurface->pChild = nullptr; + g_pHyprRenderer->damageBox(&extents); + } + + // SubsurfaceTree::destroySurfaceTree(subsurface->pChild); + // subsurface->pChild = nullptr; + } } } |