diff options
| author | Vaxry <43317083+vaxerski@users.noreply.github.com> | 2026-05-07 15:21:06 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-05-07 15:21:06 +0100 |
| commit | 58833eb1d79d7f03402cee0730c309b79f2e4501 (patch) | |
| tree | 180cadc5d2e6fcb9e2f090eeccc6fb4ccace9b51 /src/desktop/Workspace.cpp | |
| parent | 6b8b20100253c083227e611be20360f4d8e7794e (diff) | |
layout/scrolling: handle fullscreen manually (#14190)
Makes scroll handle fullscreen by itself, allowing for fs scrolls.
Diffstat (limited to 'src/desktop/Workspace.cpp')
| -rw-r--r-- | src/desktop/Workspace.cpp | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/src/desktop/Workspace.cpp b/src/desktop/Workspace.cpp index 23ea0dd7..6ff6d0b4 100644 --- a/src/desktop/Workspace.cpp +++ b/src/desktop/Workspace.cpp @@ -1,5 +1,6 @@ #include "Workspace.hpp" #include "view/Group.hpp" +#include "view/LayerSurface.hpp" #include "../Compositor.hpp" #include "../config/shared/animation/AnimationTree.hpp" #include "../config/shared/workspace/WorkspaceRuleManager.hpp" @@ -8,6 +9,7 @@ #include "../managers/EventManager.hpp" #include "../helpers/Monitor.hpp" #include "../layout/space/Space.hpp" +#include "../layout/target/Target.hpp" #include "../layout/supplementary/WorkspaceAlgoMatcher.hpp" #include "../event/EventBus.hpp" @@ -539,7 +541,10 @@ void CWorkspace::rename(const std::string& name) { } void CWorkspace::updateWindows() { - m_hasFullscreenWindow = std::ranges::any_of(m_space->targets(), [](const auto& t) { return t->fullscreenMode() != FSMODE_NONE; }); + m_hasFullscreenWindow = std::ranges::any_of(m_space->targets(), [](const auto& t) { return t && t->fullscreenMode() != FSMODE_NONE && !t->layoutManagedFullscreen(); }); + + if (!m_hasFullscreenWindow) + m_fullscreenMode = FSMODE_NONE; for (auto const& t : m_space->targets()) { if (t->window()) @@ -562,3 +567,15 @@ void CWorkspace::setPersistent(bool persistent) { bool CWorkspace::isPersistent() { return m_persistent; } + +void CWorkspace::setNoMembersAboveFullscreen() { + // make all windows and layers on the same workspace under the fullscreen window + for (auto const& w : g_pCompositor->m_windows) { + if (w->m_workspace == m_self && !w->isFullscreen() && !w->m_fadingOut && !w->m_pinned) + w->m_createdOverFullscreen = false; + } + for (auto const& ls : g_pCompositor->m_layers) { + if (ls->m_monitor == m_monitor) + ls->m_aboveFullscreen = false; + } +} |
