Skip to content

Commit

Permalink
layershell: minor fixes to re-mapping of layers
Browse files Browse the repository at this point in the history
ref #2012
  • Loading branch information
vaxerski committed Jun 12, 2024
1 parent 38132ff commit 18ee9ec
Show file tree
Hide file tree
Showing 3 changed files with 22 additions and 2 deletions.
4 changes: 4 additions & 0 deletions src/Compositor.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1361,6 +1361,10 @@ void CCompositor::addToFadingOutSafe(PHLLS pLS) {
m_vSurfacesFadingOut.emplace_back(pLS);
}

void CCompositor::removeFromFadingOutSafe(PHLLS ls) {
std::erase(m_vSurfacesFadingOut, ls);
}

void CCompositor::addToFadingOutSafe(PHLWINDOW pWindow) {
const auto FOUND = std::find_if(m_vWindowsFadingOut.begin(), m_vWindowsFadingOut.end(), [&](PHLWINDOWREF& other) { return other.lock() == pWindow; });

Expand Down
1 change: 1 addition & 0 deletions src/Compositor.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -156,6 +156,7 @@ class CCompositor {
PHLWINDOW getX11Parent(PHLWINDOW);
void scheduleFrameForMonitor(CMonitor*);
void addToFadingOutSafe(PHLLS);
void removeFromFadingOutSafe(PHLLS);
void addToFadingOutSafe(PHLWINDOW);
PHLWINDOW getWindowByRegex(const std::string&);
void warpCursorTo(const Vector2D&, bool force = false);
Expand Down
19 changes: 17 additions & 2 deletions src/desktop/LayerSurface.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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);

Expand Down Expand Up @@ -204,8 +208,6 @@ void CLayerSurface::onUnmap() {

const bool WASLASTFOCUS = g_pCompositor->m_pLastFocus == surface->resource();

surface.reset();

if (!PMONITOR)
return;

Expand All @@ -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)
Expand Down

0 comments on commit 18ee9ec

Please sign in to comment.