mirror of
https://github.com/hyprwm/Hyprland.git
synced 2025-07-31 04:01:56 -07:00
layer-shell: properly map and unmap surface and propagate unmap events
This commit is contained in:
@@ -119,6 +119,8 @@ void CLayerSurface::onMap() {
|
||||
mapped = true;
|
||||
interactivity = layerSurface->current.interactivity;
|
||||
|
||||
layerSurface->surface->map();
|
||||
|
||||
// this layer might be re-mapped.
|
||||
fadingOut = false;
|
||||
g_pCompositor->removeFromFadingOutSafe(self.lock());
|
||||
@@ -190,6 +192,7 @@ void CLayerSurface::onUnmap() {
|
||||
g_pCompositor->addToFadingOutSafe(self.lock());
|
||||
|
||||
mapped = false;
|
||||
layerSurface->surface->unmap();
|
||||
|
||||
startAnimation(false);
|
||||
return;
|
||||
@@ -201,6 +204,7 @@ void CLayerSurface::onUnmap() {
|
||||
startAnimation(false);
|
||||
|
||||
mapped = false;
|
||||
layerSurface->surface->unmap();
|
||||
|
||||
g_pCompositor->addToFadingOutSafe(self.lock());
|
||||
|
||||
|
@@ -38,6 +38,8 @@ CLayerShellResource::CLayerShellResource(SP<CZwlrLayerSurfaceV1> resource_, SP<C
|
||||
PROTO::layerShell->destroyResource(this);
|
||||
});
|
||||
|
||||
listeners.unmapSurface = surf_->events.unmap.registerListener([this](std::any d) { events.unmap.emit(); });
|
||||
|
||||
listeners.commitSurface = surf_->events.commit.registerListener([this](std::any d) {
|
||||
current = pending;
|
||||
pending.committed = 0;
|
||||
|
@@ -70,6 +70,7 @@ class CLayerShellResource : public ISurfaceRole {
|
||||
struct {
|
||||
CHyprSignalListener commitSurface;
|
||||
CHyprSignalListener destroySurface;
|
||||
CHyprSignalListener unmapSurface;
|
||||
} listeners;
|
||||
|
||||
bool closed = false;
|
||||
|
Reference in New Issue
Block a user