diff options
author | Mike Kaganski <mike.kaganski@collabora.com> | 2024-11-08 21:12:47 +0500 |
---|---|---|
committer | Mike Kaganski <mike.kaganski@collabora.com> | 2024-11-08 20:41:23 +0100 |
commit | 0f55739a75b418ff1b08abff2b8eaead2df8c997 (patch) | |
tree | 056e9c3ee765d03e788907985a6f9539db643e15 /UnoControls/inc/multiplexer.hxx | |
parent | 774fe4b443f3ce5224522219c444fabc4608b8fd (diff) |
Simplify using WeakImplHelper and OMultiTypeInterfaceContainerHelperVar4
Change-Id: Ib83b93d6055d3006eecdb25f1ccd7baf1251a40a
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/176284
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
Tested-by: Jenkins
Diffstat (limited to 'UnoControls/inc/multiplexer.hxx')
-rw-r--r-- | UnoControls/inc/multiplexer.hxx | 73 |
1 files changed, 15 insertions, 58 deletions
diff --git a/UnoControls/inc/multiplexer.hxx b/UnoControls/inc/multiplexer.hxx index 58bd1563fb0a..095e316797e8 100644 --- a/UnoControls/inc/multiplexer.hxx +++ b/UnoControls/inc/multiplexer.hxx @@ -26,9 +26,9 @@ #include <com/sun/star/awt/XTopWindowListener.hpp> #include <com/sun/star/awt/XMouseListener.hpp> #include <com/sun/star/awt/XFocusListener.hpp> -#include <cppuhelper/weak.hxx> +#include <comphelper/compbase.hxx> #include <cppuhelper/weakref.hxx> -#include <comphelper/multicontainer2.hxx> +#include <comphelper/multiinterfacecontainer4.hxx> namespace com::sun::star::awt { class XWindow; } namespace com::sun::star::awt { struct KeyEvent; } @@ -38,14 +38,13 @@ namespace com::sun::star::awt { struct WindowEvent; } namespace unocontrols { -class OMRCListenerMultiplexerHelper final : public css::awt::XFocusListener - , public css::awt::XWindowListener - , public css::awt::XKeyListener - , public css::awt::XMouseListener - , public css::awt::XMouseMotionListener - , public css::awt::XPaintListener - , public css::awt::XTopWindowListener - , public ::cppu::OWeakObject +class OMRCListenerMultiplexerHelper final : public comphelper::WeakImplHelper< css::awt::XFocusListener + , css::awt::XWindowListener + , css::awt::XKeyListener + , css::awt::XMouseListener + , css::awt::XMouseMotionListener + , css::awt::XPaintListener + , css::awt::XTopWindowListener > { public: @@ -59,51 +58,8 @@ public: OMRCListenerMultiplexerHelper( const css::uno::Reference< css::awt::XWindow >& xControl , const css::uno::Reference< css::awt::XWindow >& xPeer ); - /** - @short copy-constructor - @descr - @param rCopyInstance C++-Reference to instance to make copy from. - */ - - OMRCListenerMultiplexerHelper( const OMRCListenerMultiplexerHelper& aCopyInstance ); - virtual ~OMRCListenerMultiplexerHelper() override; - // XInterface - - /** - @short give answer, if interface is supported - @descr The interfaces are searched by type. - - @seealso XInterface - - @param "rType" is the type of searched interface. - - @return Any information about found interface - - @onerror A RuntimeException is thrown. - */ - - virtual css::uno::Any SAL_CALL queryInterface( const css::uno::Type& aType ) override; - - /** - @short increment refcount - @seealso XInterface - @seealso release() - @onerror A RuntimeException is thrown. - */ - - virtual void SAL_CALL acquire() noexcept override; - - /** - @short decrement refcount - @seealso XInterface - @seealso acquire() - @onerror A RuntimeException is thrown. - */ - - virtual void SAL_CALL release() noexcept override; - OMRCListenerMultiplexerHelper& operator= ( const OMRCListenerMultiplexerHelper& aCopyInstance ); // container methods @@ -126,14 +82,14 @@ public: */ void advise( const css::uno::Type& aType , - const css::uno::Reference< css::uno::XInterface >& xListener ); + const css::uno::Reference< css::lang::XEventListener >& xListener ); /** @short Remove the specified listener from the source. */ void unadvise( const css::uno::Type& aType , - const css::uno::Reference< css::uno::XInterface >& xListener ); + const css::uno::Reference< css::lang::XEventListener >& xListener ); // XEventListener @@ -217,14 +173,15 @@ private: void impl_unadviseFromPeer( const css::uno::Reference< css::awt::XWindow >& xPeer , const css::uno::Type& aType ); + template <class Interface, typename Event> + void Multiplex(void (SAL_CALL Interface::*method)(const Event&), const Event& event); + // private variables private: - ::osl::Mutex m_aMutex; css::uno::Reference< css::awt::XWindow > m_xPeer; /// The source of the events. Normally this is the peer object. css::uno::WeakReference< css::awt::XWindow > m_xControl; - comphelper::OMultiTypeInterfaceContainerHelper2 m_aListenerHolder; - + comphelper::OMultiTypeInterfaceContainerHelperVar4<css::uno::Type, css::lang::XEventListener> m_aListenerHolder; }; } |