summaryrefslogtreecommitdiff
path: root/src/layout/algorithm/ModeAlgorithm.hpp
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/layout/algorithm/ModeAlgorithm.hpp
parent6b8b20100253c083227e611be20360f4d8e7794e (diff)
layout/scrolling: handle fullscreen manually (#14190)
Makes scroll handle fullscreen by itself, allowing for fs scrolls.
Diffstat (limited to 'src/layout/algorithm/ModeAlgorithm.hpp')
-rw-r--r--src/layout/algorithm/ModeAlgorithm.hpp13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/layout/algorithm/ModeAlgorithm.hpp b/src/layout/algorithm/ModeAlgorithm.hpp
index e53d4391..1348a6f4 100644
--- a/src/layout/algorithm/ModeAlgorithm.hpp
+++ b/src/layout/algorithm/ModeAlgorithm.hpp
@@ -13,6 +13,12 @@ namespace Layout {
class ITarget;
class CAlgorithm;
+ struct SFullscreenRequest {
+ SP<ITarget> target;
+ eFullscreenMode currentEffectiveMode = static_cast<eFullscreenMode>(0);
+ eFullscreenMode effectiveMode = static_cast<eFullscreenMode>(0);
+ };
+
class IModeAlgorithm {
public:
virtual ~IModeAlgorithm() = default;
@@ -44,6 +50,13 @@ namespace Layout {
// optional: predict new window's size
virtual std::optional<Vector2D> predictSizeForNewTarget();
+ // optional: allow algorithms to own fullscreen semantics for a target.
+ virtual eFullscreenRequestResult requestFullscreen(const SFullscreenRequest& request);
+
+ // optional: expose an algorithm-owned fullscreen target and whether it is monitor-exclusive.
+ virtual SP<ITarget> layoutFullscreenTarget() const;
+ virtual bool layoutFullscreenCoversMonitor() const;
+
// Impl'd here: focal point for dir
virtual std::optional<Vector2D> focalPointForDir(SP<ITarget> t, Math::eDirection dir);