summaryrefslogtreecommitdiff
path: root/src/helpers/SubsurfaceTree.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/helpers/SubsurfaceTree.cpp')
-rw-r--r--src/helpers/SubsurfaceTree.cpp16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/helpers/SubsurfaceTree.cpp b/src/helpers/SubsurfaceTree.cpp
index 7ec3635a..064ca181 100644
--- a/src/helpers/SubsurfaceTree.cpp
+++ b/src/helpers/SubsurfaceTree.cpp
@@ -89,6 +89,20 @@ void SubsurfaceTree::destroySurfaceTree(SSurfaceTreeNode* pNode) {
pNode->hyprListener_destroy.removeCallback();
pNode->hyprListener_newSubsurface.removeCallback();
+ // damage
+ if (pNode->pSurface) {
+ wlr_box extents = {};
+ wlr_surface_get_extends(pNode->pSurface, &extents);
+
+ int lx = 0, ly = 0;
+ addSurfaceGlobalOffset(pNode, &lx, &ly);
+
+ extents.x += lx;
+ extents.y += ly;
+
+ g_pHyprRenderer->damageBox(&extents);
+ }
+
surfaceTreeNodes.remove(*pNode);
Debug::log(LOG, "SurfaceTree Node removed");
@@ -162,6 +176,8 @@ void Events::listener_unmapSubsurface(void* owner, void* data) {
extents.x += lx;
extents.y += ly;
+ g_pHyprRenderer->damageBox(&extents);
+
SubsurfaceTree::destroySurfaceTree(subsurface->pChild);
subsurface->pChild = nullptr;
}