summaryrefslogtreecommitdiff
path: root/src/render/Renderer.cpp
diff options
context:
space:
mode:
authorVaxry <vaxry@vaxry.net>2026-04-29 18:51:19 +0100
committerVaxry <43317083+vaxerski@users.noreply.github.com>2026-04-29 22:05:32 +0100
commit31e025dbe04dbe1836ea759f6b6e2ea09591fb23 (patch)
tree7b810a935febc522179d332786312c5d26e1ffa7 /src/render/Renderer.cpp
parent55a1611fd8150d7bb8d1b6e2b8cc95ffccf31ea2 (diff)
desktop/window: refactor over fullscreen state
Diffstat (limited to 'src/render/Renderer.cpp')
-rw-r--r--src/render/Renderer.cpp9
1 files changed, 6 insertions, 3 deletions
diff --git a/src/render/Renderer.cpp b/src/render/Renderer.cpp
index 48405c3d..b5a32a2b 100644
--- a/src/render/Renderer.cpp
+++ b/src/render/Renderer.cpp
@@ -245,7 +245,7 @@ bool IHyprRenderer::shouldRenderWindow(PHLWINDOW pWindow, PHLMONITOR pMonitor) {
return true;
// if hidden behind fullscreen
- if (PWINDOWWORKSPACE->m_hasFullscreenWindow && !pWindow->isFullscreen() && (!pWindow->m_isFloating || !pWindow->m_createdOverFullscreen) &&
+ if (PWINDOWWORKSPACE->m_hasFullscreenWindow && !pWindow->isAllowedOverFullscreen() &&
pWindow->alphaValue(WINDOW_ALPHA_FADE) * pWindow->alphaValue(WINDOW_ALPHA_FULLSCREEN) == 0)
return false;
@@ -358,6 +358,9 @@ void IHyprRenderer::renderWorkspaceWindowsFullscreen(PHLMONITOR pMonitor, PHLWOR
if (pWorkspace->m_isSpecialWorkspace && w->m_monitor != pWorkspace->m_monitor)
continue; // special on another are rendered as a part of the base pass
+ if (w->isFadingOutUnderFullscreen())
+ continue; // render these over fullscreen so the fade-out is visible
+
renderWindow(w, pMonitor, time, true, RENDER_PASS_ALL);
}
@@ -396,8 +399,8 @@ void IHyprRenderer::renderWorkspaceWindowsFullscreen(PHLMONITOR pMonitor, PHLWOR
// then render windows over fullscreen.
for (auto const& w : g_pCompositor->m_windows) {
- const bool shouldSkipWindow = w->workspaceID() != pWorkspaceWindow->workspaceID() || !w->m_isFloating || (!w->m_createdOverFullscreen && !w->m_pinned) ||
- (!w->m_isMapped && !w->m_fadingOut) || w->isFullscreen();
+ const bool shouldSkipWindow =
+ w->workspaceID() != pWorkspaceWindow->workspaceID() || !w->m_isFloating || !w->shouldRenderOverFullscreen() || (!w->m_isMapped && !w->m_fadingOut) || w->isFullscreen();
if (shouldSkipWindow)
continue;