summaryrefslogtreecommitdiff
path: root/src/desktop/Workspace.cpp
diff options
context:
space:
mode:
authorVaxry <43317083+vaxerski@users.noreply.github.com>2026-05-07 15:21:06 +0100
committerGitHub <noreply@github.com>2026-05-07 15:21:06 +0100
commit58833eb1d79d7f03402cee0730c309b79f2e4501 (patch)
tree180cadc5d2e6fcb9e2f090eeccc6fb4ccace9b51 /src/desktop/Workspace.cpp
parent6b8b20100253c083227e611be20360f4d8e7794e (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.cpp19
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;
+ }
+}