From 58833eb1d79d7f03402cee0730c309b79f2e4501 Mon Sep 17 00:00:00 2001 From: Vaxry <43317083+vaxerski@users.noreply.github.com> Date: Thu, 7 May 2026 15:21:06 +0100 Subject: layout/scrolling: handle fullscreen manually (#14190) Makes scroll handle fullscreen by itself, allowing for fs scrolls. --- src/layout/LayoutManager.hpp | 45 ++++++++++++++++++++++++-------------------- 1 file changed, 25 insertions(+), 20 deletions(-) (limited to 'src/layout/LayoutManager.hpp') diff --git a/src/layout/LayoutManager.hpp b/src/layout/LayoutManager.hpp index 2660cf28..ef886daa 100644 --- a/src/layout/LayoutManager.hpp +++ b/src/layout/LayoutManager.hpp @@ -40,43 +40,48 @@ namespace Layout { SNAP_RIGHT = (1 << 3), }; + enum eFullscreenRequestResult : uint8_t { + FULLSCREEN_REQUEST_DEFAULT = 0, + FULLSCREEN_REQUEST_HANDLED_BY_LAYOUT, + }; + class CLayoutManager { public: CLayoutManager(); ~CLayoutManager() = default; - void newTarget(SP target, SP space); - void removeTarget(SP target); + void newTarget(SP target, SP space); + void removeTarget(SP target); - void changeFloatingMode(SP target); + void changeFloatingMode(SP target); - void beginDragTarget(SP target, eMouseBindMode mode); - void moveMouse(const Vector2D& mousePos); - void resizeTarget(const Vector2D& Δ, SP target, eRectCorner corner = CORNER_NONE); - void moveTarget(const Vector2D& Δ, SP target); - void setTargetGeom(const CBox& box, SP target); // floats only - void endDragTarget(); + void beginDragTarget(SP target, eMouseBindMode mode); + void moveMouse(const Vector2D& mousePos); + void resizeTarget(const Vector2D& Δ, SP target, eRectCorner corner = CORNER_NONE); + void moveTarget(const Vector2D& Δ, SP target); + void setTargetGeom(const CBox& box, SP target); // floats only + void endDragTarget(); - Config::ErrorResult layoutMsg(const std::string_view& sv); + Config::ErrorResult layoutMsg(const std::string_view& sv); - void fullscreenRequestForTarget(SP target, eFullscreenMode currentEffectiveMode, eFullscreenMode effectiveMode); + eFullscreenRequestResult fullscreenRequestForTarget(SP target, eFullscreenMode currentEffectiveMode, eFullscreenMode effectiveMode); - void switchTargets(SP a, SP b, bool preserveFocus = true); + void switchTargets(SP a, SP b, bool preserveFocus = true); - void moveInDirection(SP target, const std::string& direction, bool silent = false); + void moveInDirection(SP target, const std::string& direction, bool silent = false); - SP getNextCandidate(SP space, SP from); + SP getNextCandidate(SP space, SP from); - bool isReachable(SP target); + bool isReachable(SP target); - void bringTargetToTop(SP target); + void bringTargetToTop(SP target); - std::optional predictSizeForNewTiledTarget(); + std::optional predictSizeForNewTiledTarget(); - void performSnap(Vector2D& sourcePos, Vector2D& sourceSize, SP target, eMouseBindMode mode, int corner, const Vector2D& beginSize); + void performSnap(Vector2D& sourcePos, Vector2D& sourceSize, SP target, eMouseBindMode mode, int corner, const Vector2D& beginSize); - void invalidateMonitorGeometries(PHLMONITOR); - void recalculateMonitor(PHLMONITOR); + void invalidateMonitorGeometries(PHLMONITOR); + void recalculateMonitor(PHLMONITOR); const UP& dragController(); -- cgit v1.2.3