summaryrefslogtreecommitdiff
path: root/src/desktop/LayerSurface.cpp
diff options
context:
space:
mode:
authorVaxry <vaxry@vaxry.net>2024-06-12 22:57:06 +0200
committerVaxry <vaxry@vaxry.net>2024-06-12 22:57:06 +0200
commit18ee9ece9cec51daa75fbf765d9fa6b72ef898e5 (patch)
tree5bc2af37a443dd35c289fba389854c839e4c3cb6 /src/desktop/LayerSurface.cpp
parent38132ffaf53c843a3ed03be5b305702fde8f5a49 (diff)
layershell: minor fixes to re-mapping of layers
ref #2012
Diffstat (limited to 'src/desktop/LayerSurface.cpp')
-rw-r--r--src/desktop/LayerSurface.cpp19
1 files changed, 17 insertions, 2 deletions
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)