aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/render/Renderer.cpp
diff options
context:
space:
mode:
authorVaxry <[email protected]>2024-03-25 16:20:30 +0000
committerVaxry <[email protected]>2024-03-25 16:20:30 +0000
commitae17e900e720430c7848faf1b6e21b5f352c26ca (patch)
tree32b2a0e96a78f3c487f9d2bad96492bc6fb49719 /src/render/Renderer.cpp
parentca17a89d86b73f37019c4cc0c7087303adbcc1f9 (diff)
downloadHyprland-ae17e900e720430c7848faf1b6e21b5f352c26ca.tar.gz
Hyprland-ae17e900e720430c7848faf1b6e21b5f352c26ca.zip
layer-shell: render popups above everything
Diffstat (limited to 'src/render/Renderer.cpp')
-rw-r--r--src/render/Renderer.cpp14
1 files changed, 11 insertions, 3 deletions
diff --git a/src/render/Renderer.cpp b/src/render/Renderer.cpp
index 3e8b277f..4680568c 100644
--- a/src/render/Renderer.cpp
+++ b/src/render/Renderer.cpp
@@ -646,7 +646,7 @@ void CHyprRenderer::renderWindow(CWindow* pWindow, CMonitor* pMonitor, timespec*
g_pHyprOpenGL->m_RenderData.clipBox = CBox();
}
-void CHyprRenderer::renderLayer(SLayerSurface* pLayer, CMonitor* pMonitor, timespec* time) {
+void CHyprRenderer::renderLayer(SLayerSurface* pLayer, CMonitor* pMonitor, timespec* time, bool popups) {
if (pLayer->fadingOut) {
g_pHyprOpenGL->renderSnapshot(&pLayer);
return;
@@ -678,13 +678,15 @@ void CHyprRenderer::renderLayer(SLayerSurface* pLayer, CMonitor* pMonitor, times
g_pHyprOpenGL->m_RenderData.discardOpacity = pLayer->ignoreAlphaValue;
}
- wlr_surface_for_each_surface(pLayer->layerSurface->surface, renderSurface, &renderdata);
+ if (!popups)
+ wlr_surface_for_each_surface(pLayer->layerSurface->surface, renderSurface, &renderdata);
renderdata.squishOversized = false; // don't squish popups
renderdata.dontRound = true;
renderdata.popup = true;
renderdata.blur = pLayer->forceBlurPopups;
- wlr_layer_surface_v1_for_each_popup_surface(pLayer->layerSurface, renderSurface, &renderdata);
+ if (popups)
+ wlr_layer_surface_v1_for_each_popup_surface(pLayer->layerSurface, renderSurface, &renderdata);
g_pHyprOpenGL->m_pCurrentLayer = nullptr;
g_pHyprOpenGL->m_RenderData.clipBox = {};
@@ -855,6 +857,12 @@ void CHyprRenderer::renderAllClientsForWorkspace(CMonitor* pMonitor, CWorkspace*
renderLayer(ls.get(), pMonitor, time);
}
+ for (auto& lsl : pMonitor->m_aLayerSurfaceLayers) {
+ for (auto& ls : lsl) {
+ renderLayer(ls.get(), pMonitor, time, true);
+ }
+ }
+
renderDragIcon(pMonitor, time);
//g_pHyprOpenGL->restoreMatrix();