sfx2/source/inc/eventsupplier.hxx    |   14 +++++++-------
 sfx2/source/notify/eventsupplier.cxx |   10 +++++-----
 2 files changed, 12 insertions(+), 12 deletions(-)

New commits:
commit 28eef82cb16faef0b8ddc9912560efb779baa9f9
Author:     Mike Kaganski <mike.kagan...@collabora.com>
AuthorDate: Tue Nov 30 00:08:57 2021 +0200
Commit:     Mike Kaganski <mike.kagan...@collabora.com>
CommitDate: Tue Nov 30 06:21:14 2021 +0100

    tdf#117280: derive SfxEvents_Impl from css::document::XDocumentEventListener
    
    It abused XEventListener, and created a DocumentEvent object from
    the incomplete data passed to notifyEvent in EventObject. That way,
    the data initially created for the document event (in Supplement)
    was lost on the way.
    
    Change-Id: I409611482ce2323a3192c68f3525f450a9395815
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/126090
    Tested-by: Jenkins
    Reviewed-by: Mike Kaganski <mike.kagan...@collabora.com>

diff --git a/sfx2/source/inc/eventsupplier.hxx 
b/sfx2/source/inc/eventsupplier.hxx
index af3d5bf357d5..0bbd11ef1773 100644
--- a/sfx2/source/inc/eventsupplier.hxx
+++ b/sfx2/source/inc/eventsupplier.hxx
@@ -24,8 +24,8 @@
 
 #include <com/sun/star/document/DocumentEvent.hpp>
 #include <com/sun/star/container/XNameReplace.hpp>
-#include <com/sun/star/document/XEventListener.hpp>
-#include <com/sun/star/document/XEventBroadcaster.hpp>
+#include <com/sun/star/document/XDocumentEventListener.hpp>
+#include <com/sun/star/document/XDocumentEventBroadcaster.hpp>
 #include <com/sun/star/uno/Reference.hxx>
 #include <com/sun/star/uno/Type.hxx>
 #include <cppuhelper/implbase.hxx>
@@ -40,17 +40,17 @@ class SfxObjectShell;
 class SvxMacro;
 
 
-class SfxEvents_Impl final : public ::cppu::WeakImplHelper< 
css::container::XNameReplace, css::document::XEventListener  >
+class SfxEvents_Impl final : public ::cppu::WeakImplHelper< 
css::container::XNameReplace, css::document::XDocumentEventListener >
 {
     css::uno::Sequence< OUString >     maEventNames;
     std::vector< css::uno::Any >       maEventData;
-    css::uno::Reference< css::document::XEventBroadcaster >  mxBroadcaster;
+    css::uno::Reference< css::document::XDocumentEventBroadcaster >  
mxBroadcaster;
     ::osl::Mutex                    maMutex;
     SfxObjectShell                 *mpObjShell;
 
 public:
                                 SfxEvents_Impl( SfxObjectShell* pShell,
-                                                css::uno::Reference< 
css::document::XEventBroadcaster > const & xBroadcaster );
+                                                css::uno::Reference< 
css::document::XDocumentEventBroadcaster > const & xBroadcaster );
                                virtual ~SfxEvents_Impl() override;
 
     //  --- XNameReplace ---
@@ -65,8 +65,8 @@ public:
     virtual css::uno::Type SAL_CALL    getElementType() override;
     virtual sal_Bool SAL_CALL   hasElements() override;
 
-    // --- ::document::XEventListener ---
-    virtual void SAL_CALL       notifyEvent( const css::document::EventObject& 
aEvent ) override;
+    // --- ::document::XDocumentEventListener ---
+    virtual void SAL_CALL documentEventOccured(const 
css::document::DocumentEvent& aEvent) override;
 
     // --- ::lang::XEventListener ---
     virtual void SAL_CALL       disposing( const css::lang::EventObject& 
Source ) override;
diff --git a/sfx2/source/notify/eventsupplier.cxx 
b/sfx2/source/notify/eventsupplier.cxx
index 00135b2a0654..08699ca70185 100644
--- a/sfx2/source/notify/eventsupplier.cxx
+++ b/sfx2/source/notify/eventsupplier.cxx
@@ -280,7 +280,7 @@ void SfxEvents_Impl::Execute( uno::Any const & aEventData, 
const document::Docum
 
 // --- ::document::XEventListener ---
 
-void SAL_CALL SfxEvents_Impl::notifyEvent( const document::EventObject& aEvent 
)
+void SAL_CALL SfxEvents_Impl::documentEventOccured( const 
document::DocumentEvent& aEvent )
 {
     ::osl::ClearableMutexGuard aGuard( maMutex );
 
@@ -292,7 +292,7 @@ void SAL_CALL SfxEvents_Impl::notifyEvent( const 
document::EventObject& aEvent )
 
     uno::Any aEventData = maEventData[ nIndex ];
     aGuard.clear();
-    Execute( aEventData, document::DocumentEvent(aEvent.Source, 
aEvent.EventName, nullptr, uno::Any()), mpObjShell );
+    Execute( aEventData, aEvent, mpObjShell );
 }
 
 
@@ -304,14 +304,14 @@ void SAL_CALL SfxEvents_Impl::disposing( const 
lang::EventObject& /*Source*/ )
 
     if ( mxBroadcaster.is() )
     {
-        mxBroadcaster->removeEventListener( this );
+        mxBroadcaster->removeDocumentEventListener( this );
         mxBroadcaster = nullptr;
     }
 }
 
 
 SfxEvents_Impl::SfxEvents_Impl( SfxObjectShell* pShell,
-                                uno::Reference< document::XEventBroadcaster > 
const & xBroadcaster )
+                                uno::Reference< 
document::XDocumentEventBroadcaster > const & xBroadcaster )
 {
     // get the list of supported events and store it
     if ( pShell )
@@ -325,7 +325,7 @@ SfxEvents_Impl::SfxEvents_Impl( SfxObjectShell* pShell,
     mxBroadcaster   = xBroadcaster;
 
     if ( mxBroadcaster.is() )
-        mxBroadcaster->addEventListener( this );
+        mxBroadcaster->addDocumentEventListener( this );
 }
 
 

Reply via email to