mirror of
https://github.com/hyprwm/Hyprland
synced 2024-11-05 17:25:58 +01:00
48 lines
1,003 B
C++
48 lines
1,003 B
C++
|
#pragma once
|
||
|
|
||
|
#include "../defines.hpp"
|
||
|
|
||
|
class CWLSurface {
|
||
|
public:
|
||
|
CWLSurface() = default;
|
||
|
CWLSurface(wlr_surface* pSurface);
|
||
|
~CWLSurface();
|
||
|
|
||
|
void assign(wlr_surface* pSurface);
|
||
|
|
||
|
CWLSurface(const CWLSurface&) = delete;
|
||
|
CWLSurface(CWLSurface&&) = delete;
|
||
|
CWLSurface& operator=(const CWLSurface&) = delete;
|
||
|
CWLSurface& operator=(CWLSurface&&) = delete;
|
||
|
|
||
|
wlr_surface* wlr() const;
|
||
|
bool exists() const;
|
||
|
|
||
|
CWLSurface& operator=(wlr_surface* pSurface) {
|
||
|
destroy();
|
||
|
m_pWLRSurface = pSurface;
|
||
|
init();
|
||
|
|
||
|
return *this;
|
||
|
}
|
||
|
|
||
|
bool operator==(const CWLSurface& other) const {
|
||
|
return other.wlr() == wlr();
|
||
|
}
|
||
|
|
||
|
bool operator==(const wlr_surface* other) const {
|
||
|
return other == wlr();
|
||
|
}
|
||
|
|
||
|
explicit operator bool() const {
|
||
|
return exists();
|
||
|
}
|
||
|
|
||
|
private:
|
||
|
wlr_surface* m_pWLRSurface = nullptr;
|
||
|
|
||
|
void destroy();
|
||
|
void init();
|
||
|
|
||
|
DYNLISTENER(destroy);
|
||
|
};
|