#pragma once #include #include "../defines.hpp" #include "WLSurface.hpp" #include "rule/layerRule/LayerRuleApplicator.hpp" #include "../helpers/AnimatedVariable.hpp" class CLayerShellResource; class CLayerSurface { public: static PHLLS create(SP); private: CLayerSurface(SP); public: ~CLayerSurface(); bool isFadedOut(); int popupsCount(); PHLANIMVAR m_realPosition; PHLANIMVAR m_realSize; PHLANIMVAR m_alpha; WP m_layerSurface; // the header providing the enum type cannot be imported here int m_interactivity = 0; SP m_surface; bool m_mapped = false; uint32_t m_layer = 0; PHLMONITORREF m_monitor; bool m_fadingOut = false; bool m_readyToDelete = false; bool m_noProcess = false; UP m_ruleApplicator; PHLLSREF m_self; CBox m_geometry = {0, 0, 0, 0}; Vector2D m_position; std::string m_namespace = ""; UP m_popupHead; pid_t getPID(); void onDestroy(); void onMap(); void onUnmap(); void onCommit(); MONITORID monitorID(); private: struct { CHyprSignalListener destroy; CHyprSignalListener map; CHyprSignalListener unmap; CHyprSignalListener commit; } m_listeners; void registerCallbacks(); // For the list lookup bool operator==(const CLayerSurface& rhs) const { return m_layerSurface == rhs.m_layerSurface && m_monitor == rhs.m_monitor; } }; inline bool valid(PHLLS l) { return l; } inline bool valid(PHLLSREF l) { return l; } inline bool validMapped(PHLLS l) { if (!valid(l)) return false; return l->m_mapped; } inline bool validMapped(PHLLSREF l) { if (!valid(l)) return false; return l->m_mapped; }