summaryrefslogtreecommitdiff
path: root/src/render/Renderer.cpp
diff options
context:
space:
mode:
authorvaxerski <vaxry@vaxry.net>2022-12-28 15:18:23 +0100
committervaxerski <vaxry@vaxry.net>2022-12-28 15:18:23 +0100
commitb5f5c26be3074a16556c2b7982029fbfcf502b16 (patch)
treebe5823e10f1bd58f6781d3c4a2f546aa8b6d87ea /src/render/Renderer.cpp
parentd64fc7d336a459f497df8f2e0aada989d4ed1e96 (diff)
added dim_special
Diffstat (limited to 'src/render/Renderer.cpp')
-rw-r--r--src/render/Renderer.cpp20
1 files changed, 19 insertions, 1 deletions
diff --git a/src/render/Renderer.cpp b/src/render/Renderer.cpp
index 466cee46..c1d5e155 100644
--- a/src/render/Renderer.cpp
+++ b/src/render/Renderer.cpp
@@ -374,7 +374,8 @@ void CHyprRenderer::renderIMEPopup(SIMEPopup* pPopup, CMonitor* pMonitor, timesp
}
void CHyprRenderer::renderAllClientsForMonitor(const int& ID, timespec* time) {
- const auto PMONITOR = g_pCompositor->getMonitorFromID(ID);
+ const auto PMONITOR = g_pCompositor->getMonitorFromID(ID);
+ static auto* const PDIMSPECIAL = &g_pConfigManager->getConfigValuePtr("decoration:dim_special")->floatValue;
if (!PMONITOR)
return;
@@ -483,6 +484,7 @@ void CHyprRenderer::renderAllClientsForMonitor(const int& ID, timespec* time) {
}
// and then special
+ bool renderedSpecialBG = false;
for (auto& w : g_pCompositor->m_vWindows) {
if (w->isHidden() && !w->m_bIsMapped && !w->m_bFadingOut)
continue;
@@ -493,6 +495,22 @@ void CHyprRenderer::renderAllClientsForMonitor(const int& ID, timespec* time) {
if (!shouldRenderWindow(w.get(), PMONITOR))
continue;
+ if (!renderedSpecialBG) {
+ if (*PDIMSPECIAL != 0.f) {
+ const auto PSPECIALWORKSPACE = g_pCompositor->getWorkspaceByID(w->m_iWorkspaceID);
+
+ const auto SPECIALANIMPROGRS =
+ PSPECIALWORKSPACE->m_vRenderOffset.isBeingAnimated() ? PSPECIALWORKSPACE->m_vRenderOffset.getPercent() : PSPECIALWORKSPACE->m_fAlpha.getPercent();
+
+ const bool ANIMOUT = !PMONITOR->specialWorkspaceID;
+
+ wlr_box monbox = {0, 0, PMONITOR->vecPixelSize.x, PMONITOR->vecPixelSize.y};
+ g_pHyprOpenGL->renderRect(&monbox, CColor(0, 0, 0, *PDIMSPECIAL * 255.f * (ANIMOUT ? (1.0 - SPECIALANIMPROGRS) : SPECIALANIMPROGRS)));
+ }
+
+ renderedSpecialBG = true;
+ }
+
// render the bad boy
renderWindow(w.get(), PMONITOR, time, true, RENDER_PASS_ALL);
}