summaryrefslogtreecommitdiff
path: root/src/render/Renderer.cpp
diff options
context:
space:
mode:
authorvaxerski <43317083+vaxerski@users.noreply.github.com>2022-07-16 20:57:59 +0200
committervaxerski <43317083+vaxerski@users.noreply.github.com>2022-07-16 20:57:59 +0200
commit16afa2c42200e7a7d8b45602f584986094c92721 (patch)
tree0d975eb6193ca092014a5b55f12b4522fc61749a /src/render/Renderer.cpp
parentedcecae7a074f76d6e0a9c7c29e796621c5b9e52 (diff)
fix border rendering on certain windows
oversized subsurfaces had a tendency to be above borders, now they wont be
Diffstat (limited to 'src/render/Renderer.cpp')
-rw-r--r--src/render/Renderer.cpp19
1 files changed, 13 insertions, 6 deletions
diff --git a/src/render/Renderer.cpp b/src/render/Renderer.cpp
index e3e67a65..6823d5d3 100644
--- a/src/render/Renderer.cpp
+++ b/src/render/Renderer.cpp
@@ -40,12 +40,6 @@ void renderSurface(struct wlr_surface* surface, int x, int y, void* data) {
g_pHyprOpenGL->renderTextureWithBlur(TEXTURE, &windowBox, RDATA->fadeAlpha * RDATA->alpha, surface, rounding);
else
g_pHyprOpenGL->renderTexture(TEXTURE, &windowBox, RDATA->fadeAlpha * RDATA->alpha, rounding, true);
-
- if (RDATA->decorate) {
- auto col = g_pHyprOpenGL->m_pCurrentWindow->m_cRealBorderColor.col();
- col.a *= RDATA->fadeAlpha * RDATA->alpha / 255.f;
- g_pHyprOpenGL->renderBorder(&windowBox, col, rounding);
- }
}
else {
if (RDATA->surface && wlr_surface_is_xdg_surface(RDATA->surface)) {
@@ -241,6 +235,19 @@ void CHyprRenderer::renderWindow(CWindow* pWindow, SMonitor* pMonitor, timespec*
wlr_surface_for_each_surface(g_pXWaylandManager->getWindowSurface(pWindow), renderSurface, &renderdata);
+ if (renderdata.decorate) {
+ static auto *const PROUNDING = &g_pConfigManager->getConfigValuePtr("decoration:rounding")->intValue;
+
+ float rounding = renderdata.dontRound ? 0 : renderdata.rounding == -1 ? *PROUNDING : renderdata.rounding;
+
+ auto col = g_pHyprOpenGL->m_pCurrentWindow->m_cRealBorderColor.col();
+ col.a *= renderdata.fadeAlpha * renderdata.alpha / 255.f;
+
+ wlr_box windowBox = {renderdata.x - pMonitor->vecPosition.x, renderdata.y - pMonitor->vecPosition.y, renderdata.w, renderdata.h};
+
+ g_pHyprOpenGL->renderBorder(&windowBox, col, rounding);
+ }
+
g_pHyprOpenGL->m_RenderData.primarySurfaceUVTopLeft = Vector2D(-1, -1);
g_pHyprOpenGL->m_RenderData.primarySurfaceUVBottomRight = Vector2D(-1, -1);
}