summaryrefslogtreecommitdiff
path: root/src/protocols/AlphaModifier.hpp
diff options
context:
space:
mode:
authoroutfoxxed <outfoxxed@outfoxxed.me>2025-01-02 03:53:57 -0800
committerGitHub <noreply@github.com>2025-01-02 11:53:57 +0000
commit42fd366046d67c52449001b6a6e9b64427aee712 (patch)
tree70c4f0c6fb238a8fd775fa66d6f7990b696533fa /src/protocols/AlphaModifier.hpp
parentcbd2451570d5c4d8b40035c3fcbabfb298385458 (diff)
protocols: fix alpha-modifier noncompliance (#8929)
Also fixes small issues with hyprland-surface opacity < 1.0 while surface alpha = 1.0.
Diffstat (limited to 'src/protocols/AlphaModifier.hpp')
-rw-r--r--src/protocols/AlphaModifier.hpp27
1 files changed, 15 insertions, 12 deletions
diff --git a/src/protocols/AlphaModifier.hpp b/src/protocols/AlphaModifier.hpp
index 1bb9cf23..43f78bef 100644
--- a/src/protocols/AlphaModifier.hpp
+++ b/src/protocols/AlphaModifier.hpp
@@ -8,25 +8,28 @@
#include "../helpers/signal/Signal.hpp"
class CWLSurfaceResource;
+class CAlphaModifierProtocol;
class CAlphaModifier {
public:
CAlphaModifier(SP<CWpAlphaModifierSurfaceV1> resource_, SP<CWLSurfaceResource> surface);
- ~CAlphaModifier();
- bool good();
- SP<CWLSurfaceResource> getSurface();
- void onSurfaceDestroy();
+ bool good();
+ void setResource(SP<CWpAlphaModifierSurfaceV1> resource);
private:
- SP<CWpAlphaModifierSurfaceV1> resource;
- WP<CWLSurfaceResource> pSurface;
+ SP<CWpAlphaModifierSurfaceV1> m_pResource;
+ WP<CWLSurfaceResource> m_pSurface;
+ float m_fAlpha = 1.0;
- void setSurfaceAlpha(float a);
+ void destroy();
struct {
- CHyprSignalListener destroySurface;
+ CHyprSignalListener surfaceCommitted;
+ CHyprSignalListener surfaceDestroyed;
} listeners;
+
+ friend class CAlphaModifierProtocol;
};
class CAlphaModifierProtocol : public IWaylandProtocol {
@@ -36,13 +39,13 @@ class CAlphaModifierProtocol : public IWaylandProtocol {
virtual void bindManager(wl_client* client, void* data, uint32_t ver, uint32_t id);
private:
- void onManagerResourceDestroy(wl_resource* res);
- void destroyModifier(CAlphaModifier* decoration);
- void onGetSurface(CWpAlphaModifierV1* pMgr, uint32_t id, SP<CWLSurfaceResource> surface);
+ void destroyManager(CWpAlphaModifierV1* res);
+ void destroyAlphaModifier(CAlphaModifier* surface);
+ void getSurface(CWpAlphaModifierV1* manager, uint32_t id, SP<CWLSurfaceResource> surface);
//
std::vector<UP<CWpAlphaModifierV1>> m_vManagers;
- std::unordered_map<WP<CWLSurfaceResource>, UP<CAlphaModifier>> m_mAlphaModifiers; // xdg_toplevel -> deco
+ std::unordered_map<WP<CWLSurfaceResource>, UP<CAlphaModifier>> m_mAlphaModifiers;
friend class CAlphaModifier;
};