summaryrefslogtreecommitdiff
path: root/src/events/Layers.cpp
diff options
context:
space:
mode:
authorvaxerski <43317083+vaxerski@users.noreply.github.com>2022-05-14 17:23:46 +0200
committervaxerski <43317083+vaxerski@users.noreply.github.com>2022-05-14 17:23:46 +0200
commit109136af97547f35f767dae2e7908ab218dfea11 (patch)
tree806d931d2a3d7d04a9a5faecfcf46d5470f1633f /src/events/Layers.cpp
parent694f4433a2b6083cef5a4f43e974f9c70b9857af (diff)
Fadein/out now applies to layersurfaces too
Diffstat (limited to 'src/events/Layers.cpp')
-rw-r--r--src/events/Layers.cpp19
1 files changed, 15 insertions, 4 deletions
diff --git a/src/events/Layers.cpp b/src/events/Layers.cpp
index 12e9e93b..f9c98585 100644
--- a/src/events/Layers.cpp
+++ b/src/events/Layers.cpp
@@ -72,9 +72,6 @@ void Events::listener_destroyLayerSurface(void* owner, void* data) {
const auto PMONITOR = g_pCompositor->getMonitorFromID(layersurface->monitorID);
- // remove the layersurface as it's not used anymore
- PMONITOR->m_aLayerSurfaceLists[layersurface->layer].remove(layersurface);
-
// rearrange to fix the reserved areas
if (PMONITOR) {
g_pHyprRenderer->arrangeLayersForMonitor(PMONITOR->ID);
@@ -85,7 +82,8 @@ void Events::listener_destroyLayerSurface(void* owner, void* data) {
g_pHyprRenderer->damageBox(&geomFixed);
}
- delete layersurface;
+ layersurface->readyToDelete = true;
+ layersurface->layerSurface = nullptr;
}
void Events::listener_mapLayerSurface(void* owner, void* data) {
@@ -121,6 +119,11 @@ void Events::listener_mapLayerSurface(void* owner, void* data) {
wlr_box geomFixed = {layersurface->geometry.x + PMONITOR->vecPosition.x, layersurface->geometry.y + PMONITOR->vecPosition.y, layersurface->geometry.width, layersurface->geometry.height};
g_pHyprRenderer->damageBox(&geomFixed);
+
+ layersurface->alpha.setValue(0);
+ layersurface->alpha = 255.f;
+ layersurface->readyToDelete = false;
+ layersurface->fadingOut = false;
}
void Events::listener_unmapLayerSurface(void* owner, void* data) {
@@ -128,6 +131,14 @@ void Events::listener_unmapLayerSurface(void* owner, void* data) {
Debug::log(LOG, "LayerSurface %x unmapped", layersurface->layerSurface);
+ // make a snapshot and start fade
+ g_pHyprOpenGL->makeLayerSnapshot(layersurface);
+ layersurface->alpha = 0.f;
+
+ layersurface->fadingOut = true;
+
+ g_pCompositor->m_lSurfacesFadingOut.push_back(layersurface);
+
if (layersurface->layerSurface->mapped)
layersurface->layerSurface->mapped = false;