summaryrefslogtreecommitdiff
path: root/src/layout/target/WindowGroupTarget.hpp
blob: b3e7974984d4268e3313c88c2bf386bde4dc6c4f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#pragma once

#include "Target.hpp"

#include "../../desktop/view/Window.hpp"
#include "../../desktop/view/Group.hpp"

namespace Layout {

    class CWindowGroupTarget : public ITarget {
      public:
        static SP<CWindowGroupTarget> create(SP<Desktop::View::CGroup> g);
        virtual ~CWindowGroupTarget() = default;

        virtual eTargetType                                         type();

        virtual void                                                setPositionGlobal(const STargetBox& box);
        virtual void                                                assignToSpace(const SP<CSpace>& space, std::optional<Vector2D> focalPoint = std::nullopt);
        virtual PHLWINDOW                                           window() const;

        virtual bool                                                floating();
        virtual void                                                setFloating(bool x);
        virtual std::expected<SGeometryRequested, eGeometryFailure> desiredGeometry();
        virtual eFullscreenMode                                     fullscreenMode();
        virtual void                                                setFullscreenMode(eFullscreenMode mode);
        virtual std::optional<Vector2D>                             minSize();
        virtual std::optional<Vector2D>                             maxSize();
        virtual void                                                damageEntire();
        virtual void                                                warpPositionSize();
        virtual void                                                onUpdateSpace();

      private:
        CWindowGroupTarget(SP<Desktop::View::CGroup> g);

        void                      updatePos();

        WP<Desktop::View::CGroup> m_group;
    };
};