xdg: rewrite entire popup implementation

This commit is contained in:
Vaxry 2024-02-29 14:26:02 +00:00
parent b39dcfa497
commit 2e111c8cf9
13 changed files with 358 additions and 344 deletions

View file

@ -5,15 +5,17 @@
#include "WLSurface.hpp"
class CWindow;
struct SXDGPopup;
class CPopup;
class CSubsurface {
public:
// root dummy nodes
CSubsurface(CWindow* pOwner);
CSubsurface(CPopup* pOwner);
// real nodes
CSubsurface(wlr_subsurface* pSubsurface, CWindow* pOwner);
CSubsurface(wlr_subsurface* pSubsurface, CPopup* pOwner);
~CSubsurface();
@ -29,7 +31,6 @@ class CSubsurface {
void recheckDamageForSubsurfaces();
private:
DYNLISTENER(destroySubsurface);
DYNLISTENER(commitSubsurface);
DYNLISTENER(newSubsurface);
@ -44,9 +45,12 @@ class CSubsurface {
CSubsurface* m_pParent = nullptr;
CWindow* m_pWindowParent = nullptr;
CPopup* m_pPopupParent = nullptr;
std::vector<std::unique_ptr<CSubsurface>> m_vChildren;
bool m_bInert = false;
void initSignals();
void initExistingSubsurfaces();
void checkSiblingDamage();