forms/source/component/Filter.cxx              |    8 ++++----
 include/toolkit/awt/vclxwindow.hxx             |    8 +++++---
 include/toolkit/helper/listenermultiplexer.hxx |   24 +++++++++++++++++-------
 include/toolkit/helper/macros.hxx              |   16 +++++++---------
 svx/source/inc/gridcell.hxx                    |    1 +
 toolkit/source/awt/vclxcontainer.cxx           |    2 +-
 toolkit/source/awt/vclxwindow.cxx              |    5 ++---
 toolkit/source/controls/tree/treecontrol.cxx   |    8 ++++----
 toolkit/source/helper/listenermultiplexer.cxx  |   25 +++----------------------
 9 files changed, 44 insertions(+), 53 deletions(-)

New commits:
commit b2aa646ef09dc8434d3ca8a5bba53a8d8ff3f910
Author:     Caolán McNamara <caol...@redhat.com>
AuthorDate: Wed Dec 15 11:43:32 2021 +0000
Commit:     Caolán McNamara <caol...@redhat.com>
CommitDate: Thu Dec 16 16:34:29 2021 +0100

    use more OInterfaceContainerHelper3 in toolkit
    
    Change-Id: I3861a254d660662cbf575e9669cbacba36634856
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/126855
    Tested-by: Caolán McNamara <caol...@redhat.com>
    Reviewed-by: Caolán McNamara <caol...@redhat.com>

diff --git a/forms/source/component/Filter.cxx 
b/forms/source/component/Filter.cxx
index 7fc70280e696..38ed0b7ada01 100644
--- a/forms/source/component/Filter.cxx
+++ b/forms/source/component/Filter.cxx
@@ -357,9 +357,9 @@ namespace frm
             m_aText = sText;
             TextEvent aEvt;
             aEvt.Source = *this;
-            ::comphelper::OInterfaceIteratorHelper2 aIt( m_aTextListeners );
+            ::comphelper::OInterfaceIteratorHelper3 aIt(m_aTextListeners);
             while( aIt.hasMoreElements() )
-                static_cast<XTextListener *>(aIt.next())->textChanged( aEvt );
+                aIt.next()->textChanged(aEvt);
         }
 #endif
     }
@@ -532,9 +532,9 @@ namespace frm
             setText(aNewText);
             TextEvent aEvt;
             aEvt.Source = *this;
-            ::comphelper::OInterfaceIteratorHelper2 aIt( m_aTextListeners );
+            ::comphelper::OInterfaceIteratorHelper3 aIt(m_aTextListeners);
             while( aIt.hasMoreElements() )
-                static_cast< XTextListener* >( aIt.next() )->textChanged( aEvt 
);
+                aIt.next()->textChanged(aEvt);
         }
 #endif
         return true;
diff --git a/include/toolkit/awt/vclxwindow.hxx 
b/include/toolkit/awt/vclxwindow.hxx
index 9acc4a636a7a..9f3226ee6add 100644
--- a/include/toolkit/awt/vclxwindow.hxx
+++ b/include/toolkit/awt/vclxwindow.hxx
@@ -42,8 +42,10 @@
 #include <vector>
 #include <functional>
 
-namespace comphelper { class OInterfaceContainerHelper2; }
+namespace comphelper { template <class ListenerT> class 
OInterfaceContainerHelper3; }
 namespace com::sun::star::accessibility { class XAccessibleContext; }
+namespace com::sun::star::awt { class XTopWindowListener; }
+namespace com::sun::star::awt { class XVclContainerListener; }
 namespace vcl { class Window; }
 
 class VclWindowEvent;
@@ -97,8 +99,8 @@ protected:
                                         bool bWithDefaults = false );
     virtual void    GetPropertyIds( std::vector< sal_uInt16 > &aIds );
 
-    ::comphelper::OInterfaceContainerHelper2&  GetContainerListeners();
-    ::comphelper::OInterfaceContainerHelper2&  GetTopWindowListeners();
+    ::comphelper::OInterfaceContainerHelper3<css::awt::XVclContainerListener>& 
GetContainerListeners();
+    ::comphelper::OInterfaceContainerHelper3<css::awt::XTopWindowListener>& 
GetTopWindowListeners();
 
 public:
     typedef ::std::function<void ()>  Callback;
diff --git a/include/toolkit/helper/listenermultiplexer.hxx 
b/include/toolkit/helper/listenermultiplexer.hxx
index d1fb0215f6c9..45267944c40e 100644
--- a/include/toolkit/helper/listenermultiplexer.hxx
+++ b/include/toolkit/helper/listenermultiplexer.hxx
@@ -42,8 +42,9 @@
 #include <com/sun/star/awt/tree/XTreeExpansionListener.hpp>
 #include <com/sun/star/awt/tree/XTreeEditListener.hpp>
 #include <com/sun/star/view/XSelectionChangeListener.hpp>
+#include <cppuhelper/queryinterface.hxx>
 #include <cppuhelper/weak.hxx>
-#include <comphelper/interfacecontainer2.hxx>
+#include <comphelper/interfacecontainer3.hxx>
 #include <toolkit/helper/mutexhelper.hxx>
 #include <toolkit/helper/macros.hxx>
 #include <com/sun/star/awt/grid/XGridSelectionListener.hpp>
@@ -51,9 +52,9 @@
 
 //  class ListenerMultiplexerBase
 
-
+template <class ListenerT>
 class UNLESS_MERGELIBS(TOOLKIT_DLLPUBLIC) ListenerMultiplexerBase : public 
MutexHelper,
-                                public 
::comphelper::OInterfaceContainerHelper2,
+                                public 
::comphelper::OInterfaceContainerHelper3<ListenerT>,
                                 public css::uno::XInterface
 {
 private:
@@ -63,16 +64,25 @@ protected:
     ::cppu::OWeakObject&    GetContext() { return mrContext; }
 
 public:
-    ListenerMultiplexerBase( ::cppu::OWeakObject& rSource );
-    virtual ~ListenerMultiplexerBase();
+    ListenerMultiplexerBase( ::cppu::OWeakObject& rSource )
+        : ::comphelper::OInterfaceContainerHelper3<ListenerT>(GetMutex()), 
mrContext(rSource)
+    {
+    }
+
+    virtual ~ListenerMultiplexerBase()
+    {
+    }
 
     // css::uno::XInterface
-    css::uno::Any  SAL_CALL queryInterface( const css::uno::Type & rType ) 
override;
+    css::uno::Any  SAL_CALL queryInterface(const css::uno::Type & rType) 
override
+    {
+        return ::cppu::queryInterface(rType, 
static_cast<css::uno::XInterface*>(this));
+    }
+
     void                        SAL_CALL acquire() noexcept override  { 
mrContext.acquire(); }
     void                        SAL_CALL release() noexcept override  { 
mrContext.release(); }
 };
 
-
 //  class EventListenerMultiplexer
 
 DECL_LISTENERMULTIPLEXER_START( EventListenerMultiplexer, 
css::lang::XEventListener )
diff --git a/include/toolkit/helper/macros.hxx 
b/include/toolkit/helper/macros.hxx
index a04815ebaf20..225178c717e4 100644
--- a/include/toolkit/helper/macros.hxx
+++ b/include/toolkit/helper/macros.hxx
@@ -32,7 +32,7 @@ css::uno::Sequence< sal_Int8 > 
ClassName::getImplementationId() \
 
 
 #define DECL_LISTENERMULTIPLEXER_START( ClassName, InterfaceName ) \
-class ClassName final : public ListenerMultiplexerBase, public InterfaceName \
+class ClassName final : public ListenerMultiplexerBase<InterfaceName>, public 
InterfaceName \
 { \
 public: \
     ClassName( ::cppu::OWeakObject& rSource ); \
@@ -43,7 +43,7 @@ public: \
 
 
 #define DECL_LISTENERMULTIPLEXER_START_DLLPUB( ClassName, InterfaceName ) \
-class TOOLKIT_DLLPUBLIC ClassName final : public ListenerMultiplexerBase, 
public InterfaceName \
+class TOOLKIT_DLLPUBLIC ClassName final : public 
ListenerMultiplexerBase<InterfaceName>, public InterfaceName \
 { \
 public: \
     ClassName( ::cppu::OWeakObject& rSource ); \
@@ -59,7 +59,7 @@ public: \
 
 #define IMPL_LISTENERMULTIPLEXER_BASEMETHODS( ClassName, InterfaceName ) \
 ClassName::ClassName( ::cppu::OWeakObject& rSource ) \
-    : ListenerMultiplexerBase( rSource ) \
+    : ListenerMultiplexerBase<InterfaceName>(rSource) \
 { \
 } \
 void SAL_CALL ClassName::acquire() noexcept { 
ListenerMultiplexerBase::acquire(); } \
@@ -87,11 +87,10 @@ void ClassName::disposing( const css::lang::EventObject& ) \
 #define IMPL_TABLISTENERMULTIPLEXER_LISTENERMETHOD_BODY_1PARAM( ClassName, 
InterfaceName, MethodName, ParamType1 ) \
 { \
     ParamType1 aMulti( evt ); \
-    ::comphelper::OInterfaceIteratorHelper2 aIt( *this ); \
+    ::comphelper::OInterfaceIteratorHelper3 aIt(*this); \
     while( aIt.hasMoreElements() ) \
     { \
-        css::uno::Reference< InterfaceName > xListener( \
-            static_cast< InterfaceName* >( aIt.next() ) ); \
+        css::uno::Reference<InterfaceName> xListener(aIt.next()); \
         try \
         { \
             xListener->MethodName( aMulti ); \
@@ -113,11 +112,10 @@ void ClassName::disposing( const css::lang::EventObject& 
) \
 { \
     EventType aMulti( evt ); \
     aMulti.Source = &GetContext(); \
-    ::comphelper::OInterfaceIteratorHelper2 aIt( *this ); \
+    ::comphelper::OInterfaceIteratorHelper3 aIt(*this); \
     while( aIt.hasMoreElements() ) \
     { \
-        css::uno::Reference< InterfaceName > xListener( \
-            static_cast< InterfaceName* >( aIt.next() ) ); \
+        css::uno::Reference<InterfaceName> xListener(aIt.next()); \
         try \
         { \
             xListener->MethodName( aMulti ); \
diff --git a/svx/source/inc/gridcell.hxx b/svx/source/inc/gridcell.hxx
index 62b983b616bc..8a2c40dcf340 100644
--- a/svx/source/inc/gridcell.hxx
+++ b/svx/source/inc/gridcell.hxx
@@ -47,6 +47,7 @@
 #include <cppuhelper/component.hxx>
 #include <cppuhelper/implbase1.hxx>
 #include <cppuhelper/implbase2.hxx>
+#include <toolkit/helper/listenermultiplexer.hxx>
 #include <tools/diagnose_ex.h>
 
 class DbCellControl;
diff --git a/toolkit/source/awt/vclxcontainer.cxx 
b/toolkit/source/awt/vclxcontainer.cxx
index 082cdacaa786..05e321d1b538 100644
--- a/toolkit/source/awt/vclxcontainer.cxx
+++ b/toolkit/source/awt/vclxcontainer.cxx
@@ -22,7 +22,7 @@
 #include <toolkit/helper/vclunohelper.hxx>
 #include <cppuhelper/typeprovider.hxx>
 #include <cppuhelper/queryinterface.hxx>
-#include <comphelper/interfacecontainer2.hxx>
+#include <comphelper/interfacecontainer3.hxx>
 
 #include <vcl/svapp.hxx>
 #include <vcl/window.hxx>
diff --git a/toolkit/source/awt/vclxwindow.cxx 
b/toolkit/source/awt/vclxwindow.cxx
index 6a07668e436b..d3252dd7ad2c 100644
--- a/toolkit/source/awt/vclxwindow.cxx
+++ b/toolkit/source/awt/vclxwindow.cxx
@@ -54,7 +54,6 @@
 #include <vcl/settings.hxx>
 #include <vcl/commandevent.hxx>
 #include <comphelper/flagguard.hxx>
-#include <comphelper/interfacecontainer2.hxx>
 #include <comphelper/interfacecontainer3.hxx>
 #include <comphelper/profilezone.hxx>
 #include "stylesettings.hxx"
@@ -1349,12 +1348,12 @@ void VCLXWindow::GetPropertyIds( std::vector< 
sal_uInt16 >& _out_rIds )
     return ImplGetPropertyIds( _out_rIds, mpImpl->mbWithDefaultProps );
 }
 
-::comphelper::OInterfaceContainerHelper2& VCLXWindow::GetContainerListeners()
+::comphelper::OInterfaceContainerHelper3<css::awt::XVclContainerListener>& 
VCLXWindow::GetContainerListeners()
 {
     return mpImpl->getContainerListeners();
 }
 
-::comphelper::OInterfaceContainerHelper2& VCLXWindow::GetTopWindowListeners()
+::comphelper::OInterfaceContainerHelper3<css::awt::XTopWindowListener>& 
VCLXWindow::GetTopWindowListeners()
 {
     return mpImpl->getTopWindowListeners();
 }
diff --git a/toolkit/source/controls/tree/treecontrol.cxx 
b/toolkit/source/controls/tree/treecontrol.cxx
index 34cfb95acdb4..76e3efd7a274 100644
--- a/toolkit/source/controls/tree/treecontrol.cxx
+++ b/toolkit/source/controls/tree/treecontrol.cxx
@@ -451,10 +451,10 @@ void UnoTreeControl::createPeer( const uno::Reference< 
awt::XToolkit > & rxToolk
 
 void SAL_CALL TreeEditListenerMultiplexer::nodeEditing( const Reference< 
XTreeNode >& Node )
 {
-    ::comphelper::OInterfaceIteratorHelper2 aIt( *this );
+    ::comphelper::OInterfaceIteratorHelper3 aIt(*this);
     while( aIt.hasMoreElements() )
     {
-        Reference< XTreeEditListener > xListener(static_cast< 
XTreeEditListener* >( aIt.next() ) );
+        Reference<XTreeEditListener> xListener(aIt.next());
         try
         {
             xListener->nodeEditing( Node );
@@ -474,10 +474,10 @@ void SAL_CALL TreeEditListenerMultiplexer::nodeEditing( 
const Reference< XTreeNo
 
 void SAL_CALL TreeEditListenerMultiplexer::nodeEdited( const Reference< 
XTreeNode >& Node, const OUString& NewText )
 {
-    ::comphelper::OInterfaceIteratorHelper2 aIt( *this );
+    ::comphelper::OInterfaceIteratorHelper3 aIt(*this);
     while( aIt.hasMoreElements() )
     {
-        Reference< XTreeEditListener > xListener( static_cast< 
XTreeEditListener* >( aIt.next() ) );
+        Reference<XTreeEditListener> xListener(aIt.next());
         try
         {
             xListener->nodeEdited( Node, NewText );
diff --git a/toolkit/source/helper/listenermultiplexer.cxx 
b/toolkit/source/helper/listenermultiplexer.cxx
index 2cb6988f8a04..eeed767ffa48 100644
--- a/toolkit/source/helper/listenermultiplexer.cxx
+++ b/toolkit/source/helper/listenermultiplexer.cxx
@@ -20,25 +20,6 @@
 #include <toolkit/helper/listenermultiplexer.hxx>
 #include <toolkit/helper/macros.hxx>
 #include <com/sun/star/lang/DisposedException.hpp>
-#include <cppuhelper/queryinterface.hxx>
-
-//  class ListenerMultiplexerBase
-
-ListenerMultiplexerBase::ListenerMultiplexerBase( ::cppu::OWeakObject& rSource 
)
-    : ::comphelper::OInterfaceContainerHelper2( GetMutex() ), mrContext( 
rSource )
-{
-}
-
-ListenerMultiplexerBase::~ListenerMultiplexerBase()
-{
-}
-
-// css::uno::XInterface
-css::uno::Any ListenerMultiplexerBase::queryInterface( const css::uno::Type & 
rType )
-{
-    return ::cppu::queryInterface( rType, static_cast< css::uno::XInterface* 
>(this) );
-}
-
 
 //  class EventListenerMultiplexer
 
@@ -51,6 +32,7 @@ void SAL_CALL EventListenerMultiplexer::acquire() noexcept
 {
     return ListenerMultiplexerBase::acquire();
 }
+
 void SAL_CALL EventListenerMultiplexer::release() noexcept
 {
     return ListenerMultiplexerBase::release();
@@ -165,11 +147,10 @@ IMPL_TABLISTENERMULTIPLEXER_LISTENERMETHOD_BODY_1PARAM( 
TabListenerMultiplexer,
 void TabListenerMultiplexer::changed( sal_Int32 evt, const css::uno::Sequence< 
css::beans::NamedValue >& evt2 )
 {
     sal_Int32 aMulti( evt );
-    ::comphelper::OInterfaceIteratorHelper2 aIt( *this );
+    ::comphelper::OInterfaceIteratorHelper3 aIt(*this);
     while( aIt.hasMoreElements() )
     {
-        css::uno::Reference< css::awt::XTabListener > xListener(
-            static_cast< css::awt::XTabListener* >( aIt.next() ) );
+        css::uno::Reference<css::awt::XTabListener> xListener(aIt.next());
         try
         {
             xListener->changed( aMulti, evt2 );

Reply via email to