From 42fd366046d67c52449001b6a6e9b64427aee712 Mon Sep 17 00:00:00 2001 From: outfoxxed Date: Thu, 2 Jan 2025 03:53:57 -0800 Subject: protocols: fix alpha-modifier noncompliance (#8929) Also fixes small issues with hyprland-surface opacity < 1.0 while surface alpha = 1.0. --- src/protocols/AlphaModifier.hpp | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) (limited to 'src/protocols/AlphaModifier.hpp') 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 resource_, SP surface); - ~CAlphaModifier(); - bool good(); - SP getSurface(); - void onSurfaceDestroy(); + bool good(); + void setResource(SP resource); private: - SP resource; - WP pSurface; + SP m_pResource; + WP 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 surface); + void destroyManager(CWpAlphaModifierV1* res); + void destroyAlphaModifier(CAlphaModifier* surface); + void getSurface(CWpAlphaModifierV1* manager, uint32_t id, SP surface); // std::vector> m_vManagers; - std::unordered_map, UP> m_mAlphaModifiers; // xdg_toplevel -> deco + std::unordered_map, UP> m_mAlphaModifiers; friend class CAlphaModifier; }; -- cgit v1.2.3