From 18ee9ece9cec51daa75fbf765d9fa6b72ef898e5 Mon Sep 17 00:00:00 2001 From: Vaxry Date: Wed, 12 Jun 2024 22:57:06 +0200 Subject: layershell: minor fixes to re-mapping of layers ref #2012 --- src/desktop/LayerSurface.cpp | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) (limited to 'src/desktop/LayerSurface.cpp') diff --git a/src/desktop/LayerSurface.cpp b/src/desktop/LayerSurface.cpp index 0b2e23a3..2eb66440 100644 --- a/src/desktop/LayerSurface.cpp +++ b/src/desktop/LayerSurface.cpp @@ -119,6 +119,10 @@ void CLayerSurface::onMap() { mapped = true; interactivity = layerSurface->current.interactivity; + // this layer might be re-mapped. + fadingOut = false; + g_pCompositor->removeFromFadingOutSafe(self.lock()); + // fix if it changed its mon const auto PMONITOR = g_pCompositor->getMonitorFromID(monitorID); @@ -204,8 +208,6 @@ void CLayerSurface::onUnmap() { const bool WASLASTFOCUS = g_pCompositor->m_pLastFocus == surface->resource(); - surface.reset(); - if (!PMONITOR) return; @@ -221,12 +223,25 @@ void CLayerSurface::onUnmap() { g_pHyprRenderer->damageBox(&geomFixed); g_pInputManager->sendMotionEventsToFocused(); + + g_pHyprRenderer->arrangeLayersForMonitor(PMONITOR->ID); } void CLayerSurface::onCommit() { if (!layerSurface) return; + if (!mapped) { + // we're re-mapping if this is the case + if (layerSurface->surface && !layerSurface->surface->current.buffer) { + fadingOut = false; + geometry = {}; + g_pHyprRenderer->arrangeLayersForMonitor(monitorID); + } + + return; + } + const auto PMONITOR = g_pCompositor->getMonitorFromID(monitorID); if (!PMONITOR) -- cgit v1.2.3