decorations: Decoration Positioner (#3800)

This commit is contained in:
Vaxry 2023-11-11 14:37:17 +00:00 committed by GitHub
parent 7345b1a1ea
commit 9be6fbf5ea
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
27 changed files with 610 additions and 266 deletions

View file

@ -2,6 +2,7 @@
#include "../../defines.hpp"
#include "../../helpers/Region.hpp"
#include "DecorationPositioner.hpp"
enum eDecorationType
{
@ -27,36 +28,37 @@ enum eDecorationFlags
class CWindow;
class CMonitor;
class CDecorationPositioner;
class IHyprWindowDecoration {
public:
IHyprWindowDecoration(CWindow*);
virtual ~IHyprWindowDecoration() = 0;
virtual SWindowDecorationExtents getWindowDecorationExtents() = 0;
virtual SDecorationPositioningInfo getPositioningInfo() = 0;
virtual void draw(CMonitor*, float a, const Vector2D& offset = Vector2D()) = 0;
virtual void onPositioningReply(const SDecorationPositioningReply& reply) = 0;
virtual eDecorationType getDecorationType() = 0;
virtual void draw(CMonitor*, float a, const Vector2D& offset = Vector2D()) = 0;
virtual void updateWindow(CWindow*) = 0;
virtual eDecorationType getDecorationType() = 0;
virtual void damageEntire() = 0;
virtual void updateWindow(CWindow*) = 0;
virtual SWindowDecorationExtents getWindowDecorationReservedArea();
virtual void damageEntire() = 0; // should be ignored by non-absolute decos
virtual CRegion getWindowDecorationRegion();
virtual void onBeginWindowDragOnDeco(const Vector2D&); // called when the user calls the "movewindow" mouse dispatcher on the deco
virtual void onBeginWindowDragOnDeco(const Vector2D&); // called when the user calls the "movewindow" mouse dispatcher on the deco
virtual bool onEndWindowDragOnDeco(CWindow* pDraggedWindow, const Vector2D&); // returns true if the window should be placed by the layout
virtual bool onEndWindowDragOnDeco(CWindow* pDraggedWindow, const Vector2D&); // returns true if the window should be placed by the layout
virtual void onMouseButtonOnDeco(const Vector2D&, wlr_pointer_button_event*);
virtual void onMouseButtonOnDeco(const Vector2D&, wlr_pointer_button_event*);
virtual eDecorationLayer getDecorationLayer();
virtual eDecorationLayer getDecorationLayer();
virtual uint64_t getDecorationFlags();
virtual uint64_t getDecorationFlags();
private:
CWindow* m_pWindow = nullptr;
friend class CDecorationPositioner;
};