From afd1e71761ce4cb71bb3316dc5e4a7cc81235e7a Mon Sep 17 00:00:00 2001 From: REVO9 <80324799+REVO9@users.noreply.github.com> Date: Fri, 19 Sep 2025 00:34:54 +0200 Subject: renderer: fix inconsistent border thickness for roundingPower < 2 (#11752) --- src/render/decorations/CHyprDropShadowDecoration.cpp | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) (limited to 'src/render/decorations/CHyprDropShadowDecoration.cpp') diff --git a/src/render/decorations/CHyprDropShadowDecoration.cpp b/src/render/decorations/CHyprDropShadowDecoration.cpp index d09d4a83..50841d6b 100644 --- a/src/render/decorations/CHyprDropShadowDecoration.cpp +++ b/src/render/decorations/CHyprDropShadowDecoration.cpp @@ -117,11 +117,13 @@ void CHyprDropShadowDecoration::render(PHLMONITOR pMonitor, float const& a) { if (*PSHADOWS != 1) return; // disabled - const auto ROUNDINGBASE = PWINDOW->rounding(); - const auto ROUNDINGPOWER = PWINDOW->roundingPower(); - const auto ROUNDING = ROUNDINGBASE > 0 ? ROUNDINGBASE + PWINDOW->getRealBorderSize() : 0; - const auto PWORKSPACE = PWINDOW->m_workspace; - const auto WORKSPACEOFFSET = PWORKSPACE && !PWINDOW->m_pinned ? PWORKSPACE->m_renderOffset->value() : Vector2D(); + const auto BORDERSIZE = PWINDOW->getRealBorderSize(); + const auto ROUNDINGBASE = PWINDOW->rounding(); + const auto ROUNDINGPOWER = PWINDOW->roundingPower(); + const auto CORRECTIONOFFSET = (BORDERSIZE * (M_SQRT2 - 1) * std::max(2.0 - ROUNDINGPOWER, 0.0)); + const auto ROUNDING = ROUNDINGBASE > 0 ? (ROUNDINGBASE + BORDERSIZE) - CORRECTIONOFFSET : 0; + const auto PWORKSPACE = PWINDOW->m_workspace; + const auto WORKSPACEOFFSET = PWORKSPACE && !PWINDOW->m_pinned ? PWORKSPACE->m_renderOffset->value() : Vector2D(); // draw the shadow CBox fullBox = m_lastWindowBoxWithDecos; -- cgit v1.2.3