summaryrefslogtreecommitdiff
path: root/src/render
diff options
context:
space:
mode:
authorvaxerski <43317083+vaxerski@users.noreply.github.com>2022-05-16 23:13:32 +0200
committervaxerski <43317083+vaxerski@users.noreply.github.com>2022-05-16 23:13:32 +0200
commitf09de365d5214ea73e6578bd7a72e6c16740b6a0 (patch)
treee9e3b4c906250614ade7f197f5e946ab219e705f /src/render
parent25979fac1d77b2e1bed4a518dfe1897d653c7a89 (diff)
Added workspace fade transition
Diffstat (limited to 'src/render')
-rw-r--r--src/render/OpenGL.cpp5
-rw-r--r--src/render/Renderer.cpp6
2 files changed, 4 insertions, 7 deletions
diff --git a/src/render/OpenGL.cpp b/src/render/OpenGL.cpp
index 59bea30d..f82721b6 100644
--- a/src/render/OpenGL.cpp
+++ b/src/render/OpenGL.cpp
@@ -565,10 +565,7 @@ void CHyprOpenGLImpl::renderBorder(wlr_box* box, const CColor& col, int thick, i
wlr_matrix_transpose(glMatrix, glMatrix);
- if (col.a == 255.f)
- glDisable(GL_BLEND);
- else
- glEnable(GL_BLEND);
+ glEnable(GL_BLEND);
glUseProgram(m_shQUAD.program);
diff --git a/src/render/Renderer.cpp b/src/render/Renderer.cpp
index 22060e83..0d646317 100644
--- a/src/render/Renderer.cpp
+++ b/src/render/Renderer.cpp
@@ -41,7 +41,7 @@ bool shouldRenderWindow(CWindow* pWindow, SMonitor* pMonitor) {
const auto PWORKSPACE = g_pCompositor->getWorkspaceByID(pWindow->m_iWorkspaceID);
// if not, check if it maybe is active on a different monitor. vvv might be animation in progress
- if (g_pCompositor->isWorkspaceVisible(pWindow->m_iWorkspaceID) || (PWORKSPACE && PWORKSPACE->m_iMonitorID == pMonitor->ID && PWORKSPACE->m_vRenderOffset.isBeingAnimated()))
+ if (g_pCompositor->isWorkspaceVisible(pWindow->m_iWorkspaceID) || (PWORKSPACE && PWORKSPACE->m_iMonitorID == pMonitor->ID && (PWORKSPACE->m_vRenderOffset.isBeingAnimated() || PWORKSPACE->m_fAlpha.isBeingAnimated())))
return true;
return false;
@@ -96,7 +96,7 @@ void CHyprRenderer::renderWindow(CWindow* pWindow, SMonitor* pMonitor, timespec*
renderdata.w = pWindow->m_vRealSize.vec().x;
renderdata.h = pWindow->m_vRealSize.vec().y;
renderdata.dontRound = pWindow->m_bIsFullscreen;
- renderdata.fadeAlpha = pWindow->m_fAlpha.fl();
+ renderdata.fadeAlpha = pWindow->m_fAlpha.fl() * (PWORKSPACE->m_fAlpha.fl() / 255.f);
renderdata.alpha = pWindow == g_pCompositor->m_pLastWindow ? g_pConfigManager->getFloat("decoration:active_opacity") : g_pConfigManager->getFloat("decoration:inactive_opacity");
// apply window special data
@@ -106,7 +106,7 @@ void CHyprRenderer::renderWindow(CWindow* pWindow, SMonitor* pMonitor, timespec*
// border
if (decorate && !pWindow->m_bX11DoesntWantBorders)
- drawBorderForWindow(pWindow, pMonitor, pWindow->m_fAlpha.fl() * renderdata.alpha, PWORKSPACE->m_vRenderOffset.vec());
+ drawBorderForWindow(pWindow, pMonitor, renderdata.alpha * renderdata.fadeAlpha, PWORKSPACE->m_vRenderOffset.vec());
if (pWindow->m_bIsX11) {
if (pWindow->m_uSurface.xwayland->surface) {