shadow: avoid fatal mutation of the windowBox for calcs

fixes #3865
This commit is contained in:
Vaxry 2023-11-16 17:31:52 +00:00
parent 859841f4d1
commit 4868d4dfd3
3 changed files with 7 additions and 1 deletions

View file

@ -112,6 +112,10 @@ CBox CBox::roundInternal() {
return CBox{std::floor(x), std::floor(y), std::floor(newW), std::floor(newH)}; return CBox{std::floor(x), std::floor(y), std::floor(newW), std::floor(newH)};
} }
CBox CBox::copy() const {
return CBox{*this};
}
Vector2D CBox::pos() const { Vector2D CBox::pos() const {
return {x, y}; return {x, y};
} }

View file

@ -52,6 +52,8 @@ class CBox {
CBox& addExtents(const SWindowDecorationExtents& e); CBox& addExtents(const SWindowDecorationExtents& e);
CBox& expand(const double& value); CBox& expand(const double& value);
CBox copy() const;
SWindowDecorationExtents extentsFrom(const CBox&); // this is the big box SWindowDecorationExtents extentsFrom(const CBox&); // this is the big box
Vector2D middle() const; Vector2D middle() const;

View file

@ -129,7 +129,7 @@ void CHyprDropShadowDecoration::draw(CMonitor* pMonitor, float a, const Vector2D
CRegion saveDamage = g_pHyprOpenGL->m_RenderData.damage; CRegion saveDamage = g_pHyprOpenGL->m_RenderData.damage;
g_pHyprOpenGL->m_RenderData.damage = fullBox; g_pHyprOpenGL->m_RenderData.damage = fullBox;
g_pHyprOpenGL->m_RenderData.damage.subtract(windowBox.expand(-ROUNDING * pMonitor->scale)).intersect(saveDamage); g_pHyprOpenGL->m_RenderData.damage.subtract(windowBox.copy().expand(-ROUNDING * pMonitor->scale)).intersect(saveDamage);
alphaFB.bind(); alphaFB.bind();