summaryrefslogtreecommitdiff
path: root/src/render/Renderer.cpp
diff options
context:
space:
mode:
authorvaxerski <43317083+vaxerski@users.noreply.github.com>2023-08-25 18:05:08 +0200
committervaxerski <43317083+vaxerski@users.noreply.github.com>2023-08-25 18:05:08 +0200
commit870471dd96724474869d2e648b623c17df12fb57 (patch)
tree62b34b8586bb14dab6f64991edf9969cff885caa /src/render/Renderer.cpp
parent23e17700a73324e7e0a5bccb96e426bbb99efe7b (diff)
internal: allow opening empty special workspaces
Fixes point 2 of #2596
Diffstat (limited to 'src/render/Renderer.cpp')
-rw-r--r--src/render/Renderer.cpp33
1 files changed, 16 insertions, 17 deletions
diff --git a/src/render/Renderer.cpp b/src/render/Renderer.cpp
index 0105780d..4adae0f7 100644
--- a/src/render/Renderer.cpp
+++ b/src/render/Renderer.cpp
@@ -594,22 +594,10 @@ void CHyprRenderer::renderAllClientsForWorkspace(CMonitor* pMonitor, CWorkspace*
}
// and then special
- bool renderedSpecialBG = false;
- for (auto& w : g_pCompositor->m_vWindows) {
- if (w->isHidden() && !w->m_bIsMapped && !w->m_bFadingOut)
- continue;
-
- if (!g_pCompositor->isWorkspaceSpecial(w->m_iWorkspaceID))
- continue;
-
- if (!shouldRenderWindow(w.get(), pMonitor, pWorkspace))
- continue;
-
- if (!renderedSpecialBG) {
- const auto PSPECIALWORKSPACE = g_pCompositor->getWorkspaceByID(w->m_iWorkspaceID);
- const auto SPECIALANIMPROGRS =
- PSPECIALWORKSPACE->m_vRenderOffset.isBeingAnimated() ? PSPECIALWORKSPACE->m_vRenderOffset.getCurveValue() : PSPECIALWORKSPACE->m_fAlpha.getCurveValue();
- const bool ANIMOUT = !pMonitor->specialWorkspaceID;
+ for (auto& ws : g_pCompositor->m_vWorkspaces) {
+ if (ws->m_iMonitorID == pMonitor->ID && ws->m_fAlpha.fl() > 0.f && ws->m_bIsSpecialWorkspace) {
+ const auto SPECIALANIMPROGRS = ws->m_vRenderOffset.isBeingAnimated() ? ws->m_vRenderOffset.getCurveValue() : ws->m_fAlpha.getCurveValue();
+ const bool ANIMOUT = !pMonitor->specialWorkspaceID;
if (*PDIMSPECIAL != 0.f) {
wlr_box monbox = {translate.x, translate.y, pMonitor->vecTransformedSize.x * scale, pMonitor->vecTransformedSize.y * scale};
@@ -621,8 +609,19 @@ void CHyprRenderer::renderAllClientsForWorkspace(CMonitor* pMonitor, CWorkspace*
g_pHyprOpenGL->renderRectWithBlur(&monbox, CColor(0, 0, 0, 0), 0, (ANIMOUT ? (1.0 - SPECIALANIMPROGRS) : SPECIALANIMPROGRS));
}
- renderedSpecialBG = true;
+ break;
}
+ }
+
+ for (auto& w : g_pCompositor->m_vWindows) {
+ if (w->isHidden() && !w->m_bIsMapped && !w->m_bFadingOut)
+ continue;
+
+ if (!g_pCompositor->isWorkspaceSpecial(w->m_iWorkspaceID))
+ continue;
+
+ if (!shouldRenderWindow(w.get(), pMonitor, pWorkspace))
+ continue;
// render the bad boy
renderWindow(w.get(), pMonitor, time, true, RENDER_PASS_ALL);