[Libreoffice-commits] core.git: 2 commits - sw/inc sw/source

Bjoern Michaelsen bjoern.michaelsen at libreoffice.org
Sun Mar 11 22:34:19 UTC 2018


 sw/inc/docufld.hxx                 |    2 -
 sw/source/core/fields/docufld.cxx  |    8 +------
 sw/source/core/inc/unoport.hxx     |    6 ++---
 sw/source/core/unocore/unoport.cxx |   41 +++++++++++++++++--------------------
 4 files changed, 25 insertions(+), 32 deletions(-)

New commits:
commit 82ff1317a3f4627d25399e93da0f9bc88fe89205
Author: Bjoern Michaelsen <bjoern.michaelsen at libreoffice.org>
Date:   Wed Jan 31 23:12:14 2018 +0100

    use sw::WriterMultiListener instead of SwDepend in SwXTextPortion
    
    - also switch from old Modify() handler to new SwClientNotify()
    - also simplify some sequence generation with C++11
    
    Change-Id: I219f626ce51e07c581ddf49d0cf5dc66e2d6a997
    Reviewed-on: https://gerrit.libreoffice.org/49567
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Björn Michaelsen <bjoern.michaelsen at libreoffice.org>

diff --git a/sw/source/core/inc/unoport.hxx b/sw/source/core/inc/unoport.hxx
index d0cef52f7c70..2cb9ddb38402 100644
--- a/sw/source/core/inc/unoport.hxx
+++ b/sw/source/core/inc/unoport.hxx
@@ -115,8 +115,8 @@ private:
     std::unique_ptr< css::uno::Any > m_pRubyPosition;
     sw::UnoCursorPointer m_pUnoCursor;
 
-    const SwDepend              m_FrameDepend;
-    SwFrameFormat *                  m_pFrameFormat;
+    sw::WriterMultiListener m_aDepends;
+    SwFrameFormat*                  m_pFrameFormat;
     const SwTextPortionType     m_ePortionType;
 
     bool                        m_bIsCollapsed;
@@ -148,7 +148,7 @@ protected:
     virtual ~SwXTextPortion() override;
 
     //SwClient
-    virtual void Modify( const SfxPoolItem* pOld, const SfxPoolItem *pNew) override;
+    virtual void SwClientNotify(const SwModify&, const SfxHint& rHint) override;
 
 public:
     SwXTextPortion(const SwUnoCursor* pPortionCursor, css::uno::Reference< css::text::XText > const& rParent, SwTextPortionType   eType   );
diff --git a/sw/source/core/unocore/unoport.cxx b/sw/source/core/unocore/unoport.cxx
index 09092d1501d1..80f707ef2526 100644
--- a/sw/source/core/unocore/unoport.cxx
+++ b/sw/source/core/unocore/unoport.cxx
@@ -71,7 +71,7 @@ SwXTextPortion::SwXTextPortion(
             ?  PROPERTY_MAP_REDLINE_PORTION
             :  PROPERTY_MAP_TEXTPORTION_EXTENSIONS))
     , m_xParentText(rParent)
-    , m_FrameDepend(this, nullptr)
+    , m_aDepends(*this)
     , m_pFrameFormat(nullptr)
     , m_ePortionType(eType)
     , m_bIsCollapsed(false)
@@ -86,11 +86,12 @@ SwXTextPortion::SwXTextPortion(
     : m_pPropSet(aSwMapProvider.GetPropertySet(
                     PROPERTY_MAP_TEXTPORTION_EXTENSIONS))
     , m_xParentText(rParent)
-    , m_FrameDepend(this, &rFormat)
+    , m_aDepends(*this)
     , m_pFrameFormat(&rFormat)
     , m_ePortionType(PORTION_FRAME)
     , m_bIsCollapsed(false)
 {
+    m_aDepends.StartListening(&rFormat);
     init( pPortionCursor);
 }
 
@@ -107,7 +108,7 @@ SwXTextPortion::SwXTextPortion(
     , m_pRubyAdjust ( bIsEnd ? nullptr : new uno::Any )
     , m_pRubyIsAbove( bIsEnd ? nullptr : new uno::Any )
     , m_pRubyPosition( bIsEnd ? nullptr : new uno::Any )
-    , m_FrameDepend(this, nullptr)
+    , m_aDepends(*this)
     , m_pFrameFormat(nullptr)
     , m_ePortionType( bIsEnd ? PORTION_RUBY_END : PORTION_RUBY_START )
     , m_bIsCollapsed(false)
@@ -129,7 +130,7 @@ SwXTextPortion::~SwXTextPortion()
 {
     SolarMutexGuard aGuard;
     m_pUnoCursor.reset(nullptr);
-    const_cast<SwDepend*>(&m_FrameDepend)->EndListeningAll();
+    m_aDepends.EndListeningAll();
 }
 
 uno::Reference< text::XText >  SwXTextPortion::getText()
@@ -798,14 +799,12 @@ sal_Int64 SwXTextPortion::getSomething( const uno::Sequence< sal_Int8 >& rId )
 
 uno::Sequence< OUString > SwXTextPortion::getAvailableServiceNames()
 {
-    SolarMutexGuard aGuard;
-    uno::Sequence<OUString> aRet { "com.sun.star.text.TextContent" };
-    return aRet;
+    return { "com.sun.star.text.TextContent" };
 }
 
 OUString SwXTextPortion::getImplementationName()
 {
-    return OUString("SwXTextPortion");
+    return { "SwXTextPortion" };
 }
 
 sal_Bool SwXTextPortion::supportsService(const OUString& rServiceName)
@@ -815,24 +814,22 @@ sal_Bool SwXTextPortion::supportsService(const OUString& rServiceName)
 
 uno::Sequence< OUString > SwXTextPortion::getSupportedServiceNames()
 {
-    uno::Sequence< OUString > aRet(7);
-    OUString* pArray = aRet.getArray();
-    pArray[0] = "com.sun.star.text.TextPortion";
-    pArray[1] = "com.sun.star.style.CharacterProperties";
-    pArray[2] = "com.sun.star.style.CharacterPropertiesAsian";
-    pArray[3] = "com.sun.star.style.CharacterPropertiesComplex";
-    pArray[4] = "com.sun.star.style.ParagraphProperties";
-    pArray[5] = "com.sun.star.style.ParagraphPropertiesAsian";
-    pArray[6] = "com.sun.star.style.ParagraphPropertiesComplex";
-    return aRet;
+    return { "com.sun.star.text.TextPortion",
+            "com.sun.star.style.CharacterProperties",
+            "com.sun.star.style.CharacterPropertiesAsian",
+            "com.sun.star.style.CharacterPropertiesComplex",
+            "com.sun.star.style.ParagraphProperties",
+            "com.sun.star.style.ParagraphPropertiesAsian",
+            "com.sun.star.style.ParagraphPropertiesComplex" };
 }
 
-void SwXTextPortion::Modify( const SfxPoolItem* pOld, const SfxPoolItem *pNew)
+void SwXTextPortion::SwClientNotify(const SwModify&, const SfxHint& rHint)
 {
-    ClientModify(this, pOld, pNew);
-    if (!m_FrameDepend.GetRegisteredIn())
+    if (auto pLegacyHint = dynamic_cast<const sw::LegacyModifyHint*>(&rHint))
     {
-        m_pFrameFormat = nullptr;
+        ClientModify(this, pLegacyHint->m_pOld, pLegacyHint->m_pNew);
+        if(!m_aDepends.IsListeningTo(m_pFrameFormat))
+            m_pFrameFormat = nullptr;
     }
 }
 
commit f4ab54c17ce2fb1959886377a1e37111aed80000
Author: Bjoern Michaelsen <bjoern.michaelsen at libreoffice.org>
Date:   Mon Jan 29 23:54:03 2018 +0100

    use sw::WriterMultiListener instead of SwDepend in SwJumpEditFieldType
    
    Change-Id: I93f6dbf4eda561d68146be714e633576394d5a75
    Reviewed-on: https://gerrit.libreoffice.org/49566
    Reviewed-by: Björn Michaelsen <bjoern.michaelsen at libreoffice.org>
    Tested-by: Björn Michaelsen <bjoern.michaelsen at libreoffice.org>

diff --git a/sw/inc/docufld.hxx b/sw/inc/docufld.hxx
index 6d7fcd2f95c9..fd699b563356 100644
--- a/sw/inc/docufld.hxx
+++ b/sw/inc/docufld.hxx
@@ -632,7 +632,7 @@ public:
 class SwJumpEditFieldType : public SwFieldType
 {
     SwDoc* m_pDoc;
-    SwDepend m_aDep;
+    sw::WriterMultiListener m_aDep;
 
 public:
     SwJumpEditFieldType( SwDoc* pDoc );
diff --git a/sw/source/core/fields/docufld.cxx b/sw/source/core/fields/docufld.cxx
index 3ae4dcf8639c..fa08469d50fe 100644
--- a/sw/source/core/fields/docufld.cxx
+++ b/sw/source/core/fields/docufld.cxx
@@ -2394,7 +2394,7 @@ bool SwRefPageGetField::PutValue( const uno::Any& rAny, sal_uInt16 nWhichId )
 // field type to jump to and edit
 
 SwJumpEditFieldType::SwJumpEditFieldType( SwDoc* pD )
-    : SwFieldType( SwFieldIds::JumpEdit ), m_pDoc( pD ), m_aDep( this, nullptr )
+    : SwFieldType( SwFieldIds::JumpEdit ), m_pDoc( pD ), m_aDep( *this )
 {
 }
 
@@ -2406,11 +2406,7 @@ SwFieldType* SwJumpEditFieldType::Copy() const
 SwCharFormat* SwJumpEditFieldType::GetCharFormat()
 {
     SwCharFormat* pFormat = m_pDoc->getIDocumentStylePoolAccess().GetCharFormatFromPool( RES_POOLCHR_JUMPEDIT );
-
-    // not registered yet?
-    if( !m_aDep.GetRegisteredIn() )
-        pFormat->Add( &m_aDep );     // register
-
+    m_aDep.StartListening(pFormat);
     return pFormat;
 }
 


More information about the Libreoffice-commits mailing list