summaryrefslogtreecommitdiff
path: root/src/events/Layers.cpp
diff options
context:
space:
mode:
authorvaxerski <43317083+vaxerski@users.noreply.github.com>2022-03-21 16:33:38 +0100
committervaxerski <43317083+vaxerski@users.noreply.github.com>2022-03-21 16:33:38 +0100
commit21418f97ff31d68276b1b2b228d5b1fea26cf01d (patch)
treee178f6dc9388e21efc877cab8fa85494af0be530 /src/events/Layers.cpp
parentcd720eaf668d7b7e92dd9c8cdaeee5a851ade40f (diff)
fixed closing layers not recalcing layout
Diffstat (limited to 'src/events/Layers.cpp')
-rw-r--r--src/events/Layers.cpp13
1 files changed, 11 insertions, 2 deletions
diff --git a/src/events/Layers.cpp b/src/events/Layers.cpp
index d6e83073..141aad56 100644
--- a/src/events/Layers.cpp
+++ b/src/events/Layers.cpp
@@ -57,7 +57,7 @@ void Events::listener_destroyLayerSurface(wl_listener* listener, void* data) {
SLayerSurface* layersurface = wl_container_of(listener, layersurface, listen_destroyLayerSurface);
if (layersurface->layerSurface->mapped)
- layersurface->layerSurface->mapped = 0;
+ layersurface->layerSurface->mapped = false;
if (layersurface->layerSurface->surface == g_pCompositor->m_pLastFocus)
g_pCompositor->m_pLastFocus = nullptr;
@@ -73,12 +73,21 @@ void Events::listener_destroyLayerSurface(wl_listener* listener, void* data) {
PMONITOR->m_aLayerSurfaceLists[layersurface->layer].remove(layersurface);
delete layersurface;
+ // rearrange to fix the reserved areas
+ if (PMONITOR) {
+ g_pHyprRenderer->arrangeLayersForMonitor(PMONITOR->ID);
+ g_pLayoutManager->getCurrentLayout()->recalculateMonitor(PMONITOR->ID);
+ }
+
+
Debug::log(LOG, "LayerSurface %x destroyed", layersurface);
}
void Events::listener_mapLayerSurface(wl_listener* listener, void* data) {
SLayerSurface* layersurface = wl_container_of(listener, layersurface, listen_mapLayerSurface);
+ layersurface->layerSurface->mapped = true;
+
wlr_surface_send_enter(layersurface->layerSurface->surface, layersurface->layerSurface->output);
// fix if it changed its mon
@@ -105,7 +114,7 @@ void Events::listener_unmapLayerSurface(wl_listener* listener, void* data) {
SLayerSurface* layersurface = wl_container_of(listener, layersurface, listen_unmapLayerSurface);
if (layersurface->layerSurface->mapped)
- layersurface->layerSurface->mapped = 0;
+ layersurface->layerSurface->mapped = false;
if (layersurface->layerSurface->surface == g_pCompositor->m_pLastFocus)
g_pCompositor->m_pLastFocus = nullptr;