From ad36a9dc9ed032e6e34c06f78995bca0045f85b0 Mon Sep 17 00:00:00 2001 From: vaxerski <43317083+vaxerski@users.noreply.github.com> Date: Sun, 27 Mar 2022 17:25:20 +0200 Subject: rework popups completely --- src/helpers/SubsurfaceTree.hpp | 50 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 src/helpers/SubsurfaceTree.hpp (limited to 'src/helpers/SubsurfaceTree.hpp') diff --git a/src/helpers/SubsurfaceTree.hpp b/src/helpers/SubsurfaceTree.hpp new file mode 100644 index 00000000..df92033a --- /dev/null +++ b/src/helpers/SubsurfaceTree.hpp @@ -0,0 +1,50 @@ +#pragma once + +#include "../defines.hpp" +#include + +struct SSubsurface; + +typedef void (*applyGlobalOffsetFn)(void *, int *, int *); + +struct SSurfaceTreeNode { + wlr_surface* pSurface = nullptr; + + DYNMULTILISTENER(newSubsurface); + DYNMULTILISTENER(commit); + DYNMULTILISTENER(destroy); + + SSurfaceTreeNode* pParent = nullptr; + SSubsurface* pSubsurface = nullptr; + + std::list childSubsurfaces; + + applyGlobalOffsetFn offsetfn; + void *globalOffsetData; + + bool operator==(const SSurfaceTreeNode& rhs) { + return pSurface == rhs.pSurface; + } +}; + +struct SSubsurface { + wlr_subsurface* pSubsurface = nullptr; + + SSurfaceTreeNode* pParent = nullptr; + SSurfaceTreeNode* pChild = nullptr; + + DYNMULTILISTENER(map); + DYNMULTILISTENER(unmap); + DYNMULTILISTENER(destroy); + + bool operator==(const SSubsurface& rhs) { + return pSubsurface == rhs.pSubsurface; + } +}; + +namespace SubsurfaceTree { + SSurfaceTreeNode* createTreeRoot(wlr_surface*, applyGlobalOffsetFn, void*); + void destroySurfaceTree(SSurfaceTreeNode*); + + inline std::list surfaceTreeNodes; +}; -- cgit v1.2.3