[Libreoffice-commits] core.git: 6 commits - sw/inc sw/qa sw/source
Bjoern Michaelsen
bjoern.michaelsen at canonical.com
Wed Mar 25 02:26:07 PDT 2015
sw/inc/calbck.hxx | 18 +--------
sw/inc/hintids.hxx | 1
sw/inc/pagedesc.hxx | 4 ++
sw/qa/core/uwriter.cxx | 7 +++
sw/source/core/attr/format.cxx | 4 +-
sw/source/core/doc/DocumentContentOperationsManager.cxx | 8 +---
sw/source/core/doc/docdesc.cxx | 18 ++-------
sw/source/core/doc/docfmt.cxx | 18 ++-------
sw/source/core/doc/tblrwcl.cxx | 2 -
sw/source/core/fields/ddefld.cxx | 2 -
sw/source/core/fields/ddetbl.cxx | 2 -
sw/source/core/inc/pagefrm.hxx | 1
sw/source/core/layout/colfrm.cxx | 2 -
sw/source/core/layout/pagechg.cxx | 29 +++++++++-------
sw/source/core/txtnode/atrfld.cxx | 2 -
15 files changed, 51 insertions(+), 67 deletions(-)
New commits:
commit b4c3a2bd2373edd90fe9e38703e498c4df417f60
Author: Bjoern Michaelsen <bjoern.michaelsen at canonical.com>
Date: Wed Mar 25 00:50:45 2015 +0100
remove typed Modify for good
Change-Id: I53105b9a8a832affd0545fcd69774fad116a2a3c
diff --git a/sw/inc/calbck.hxx b/sw/inc/calbck.hxx
index e64d7ca..ab91b51 100644
--- a/sw/inc/calbck.hxx
+++ b/sw/inc/calbck.hxx
@@ -176,14 +176,10 @@ public:
// broadcasting: send notifications to all clients
// DO NOT USE IN NEW CODE! use CallSwClientNotify instead.
void NotifyClients( const SfxPoolItem *pOldValue, const SfxPoolItem *pNewValue );
+ // the same, but without setting m_bModifyLocked or checking for any of the flags
// DO NOT USE IN NEW CODE! use CallSwClientNotify instead.
void ModifyBroadcast( const SfxPoolItem *pOldValue, const SfxPoolItem *pNewValue)
{ CallSwClientNotify( sw::LegacyModifyHint{ pOldValue, pNewValue } ); };
- // the same, but without setting m_bModifyLocked or checking for any of the flags
- // mba: it would be interesting to know why this is necessary
- // also allows to limit callback to certain type (HACK)
- // DO NOT USE IN NEW CODE! use CallSwClientNotify instead.
- inline void ModifyBroadcast( const SfxPoolItem *pOldValue, const SfxPoolItem *pNewValue, TypeId nType );
// a more universal broadcasting mechanism
inline void CallSwClientNotify( const SfxHint& rHint ) const;
@@ -371,16 +367,6 @@ SwClient::SwClient( SwModify* pToRegisterIn )
pToRegisterIn->Add(this);
}
-void SwModify::ModifyBroadcast( const SfxPoolItem *pOldValue, const SfxPoolItem *pNewValue, TypeId nType)
-{
- SwIterator<SwClient,SwModify> aIter(*this);
- for(SwClient* pClient = aIter.First(); pClient; pClient = aIter.Next())
- {
- if(pClient->IsA(nType))
- pClient->Modify( pOldValue, pNewValue );
- }
-}
-
void SwModify::CallSwClientNotify( const SfxHint& rHint ) const
{
SwIterator<SwClient,SwModify> aIter(*this);
commit 0085d2f3fac063883306818affdd8e268db7b4ee
Author: Bjoern Michaelsen <bjoern.michaelsen at canonical.com>
Date: Wed Mar 25 00:49:47 2015 +0100
kill a typed Modify use
Change-Id: I713501f7ac31a5188932432adff626279432f305
diff --git a/sw/source/core/doc/DocumentContentOperationsManager.cxx b/sw/source/core/doc/DocumentContentOperationsManager.cxx
index 4b37b04..b2c13c2 100644
--- a/sw/source/core/doc/DocumentContentOperationsManager.cxx
+++ b/sw/source/core/doc/DocumentContentOperationsManager.cxx
@@ -2366,12 +2366,8 @@ bool DocumentContentOperationsManager::Overwrite( const SwPaM &rRg, const OUStri
? pNode->GetpSwpHints()->Count() : 0;
if( nOldAttrCnt != nNewAttrCnt )
{
- SwUpdateAttr aHint(
- 0,
- 0,
- 0);
-
- pNode->ModifyBroadcast( 0, &aHint, TYPE( SwCrsrShell ) );
+ SwUpdateAttr aHint(0,0,0);
+ pNode->ModifyBroadcast(nullptr, &aHint);
}
if (!m_rDoc.GetIDocumentUndoRedo().DoesUndo() &&
commit 760e94cdf16031b8fcd44ea3d32380a4103d0484
Author: Bjoern Michaelsen <bjoern.michaelsen at canonical.com>
Date: Wed Mar 25 00:20:12 2015 +0100
kill a typed Modify use
Change-Id: I7a33f95348093b9227b7620d08f77ceb560039eb
diff --git a/sw/source/core/attr/format.cxx b/sw/source/core/attr/format.cxx
index a71c982..ba6a742 100644
--- a/sw/source/core/attr/format.cxx
+++ b/sw/source/core/attr/format.cxx
@@ -322,8 +322,8 @@ void SwFmt::Modify( const SfxPoolItem* pOldValue, const SfxPoolItem* pNewValue )
// mba: move the code that ignores this event to the clients
// pass Hint only to dependent formats (no Frames)
- ModifyBroadcast( pOldValue, pNewValue, TYPE(SwFmt) );
- bContinue = false;
+ //ModifyBroadcast( pOldValue, pNewValue, TYPE(SwFmt) );
+ //bContinue = false;
}
break;
default:
commit 9e83083fcdc84b7191ed3e0a5d406e95da57ac33
Author: Bjoern Michaelsen <bjoern.michaelsen at canonical.com>
Date: Wed Mar 25 00:04:34 2015 +0100
kill a typed Modify use
Change-Id: I2d526ecb0f11281ad695d6ce158fcb5a3ef739cb
diff --git a/sw/inc/hintids.hxx b/sw/inc/hintids.hxx
index ecfd937..f98b103 100644
--- a/sw/inc/hintids.hxx
+++ b/sw/inc/hintids.hxx
@@ -306,7 +306,6 @@ RES_MSG_BEGIN = RES_FMT_END,
RES_DEL_CHR,
RES_DEL_TXT,
RES_UPDATE_ATTR,
- RES_PAGEDESC_FTNINFO,
RES_REFMARKFLD_UPDATE,
RES_DOCPOS_UPDATE,
RES_TABLEFML_UPDATE,
diff --git a/sw/inc/pagedesc.hxx b/sw/inc/pagedesc.hxx
index c4af052..2743a6b 100644
--- a/sw/inc/pagedesc.hxx
+++ b/sw/inc/pagedesc.hxx
@@ -341,6 +341,10 @@ public:
operator SwPageDesc() const; // #i7983#
};
+namespace sw {
+ class PageFootnoteHint SAL_FINAL : public SfxHint {};
+}
+
#endif // INCLUDED_SW_INC_PAGEDESC_HXX
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sw/source/core/doc/docdesc.cxx b/sw/source/core/doc/docdesc.cxx
index 0c29eb4..d5015fe 100644
--- a/sw/source/core/doc/docdesc.cxx
+++ b/sw/source/core/doc/docdesc.cxx
@@ -509,19 +509,11 @@ void SwDoc::ChgPageDesc( sal_uInt16 i, const SwPageDesc &rChged )
if( !(rDesc.GetFtnInfo() == rChged.GetFtnInfo()) )
{
rDesc.SetFtnInfo( rChged.GetFtnInfo() );
- SwMsgPoolItem aInfo( RES_PAGEDESC_FTNINFO );
- {
- rDesc.GetMaster().ModifyBroadcast( &aInfo, 0, TYPE(SwFrm) );
- }
- {
- rDesc.GetLeft().ModifyBroadcast( &aInfo, 0, TYPE(SwFrm) );
- }
- {
- rDesc.GetFirstMaster().ModifyBroadcast( &aInfo, 0, TYPE(SwFrm) );
- }
- {
- rDesc.GetFirstLeft().ModifyBroadcast( &aInfo, 0, TYPE(SwFrm) );
- }
+ sw::PageFootnoteHint aHint;
+ rDesc.GetMaster().CallSwClientNotify(aHint);
+ rDesc.GetLeft().CallSwClientNotify(aHint);
+ rDesc.GetFirstMaster().CallSwClientNotify(aHint);
+ rDesc.GetFirstLeft().CallSwClientNotify(aHint);
}
getIDocumentState().SetModified();
diff --git a/sw/source/core/doc/docfmt.cxx b/sw/source/core/doc/docfmt.cxx
index 0abbacb..fd6f4fe 100644
--- a/sw/source/core/doc/docfmt.cxx
+++ b/sw/source/core/doc/docfmt.cxx
@@ -1507,20 +1507,12 @@ void SwDoc::CopyPageDesc( const SwPageDesc& rSrcDesc, SwPageDesc& rDstDesc,
// If foot notes change the pages have to be triggered
if( !(rDstDesc.GetFtnInfo() == rSrcDesc.GetFtnInfo()) )
{
+ sw::PageFootnoteHint aHint;
rDstDesc.SetFtnInfo( rSrcDesc.GetFtnInfo() );
- SwMsgPoolItem aInfo( RES_PAGEDESC_FTNINFO );
- {
- rDstDesc.GetMaster().ModifyBroadcast( &aInfo, 0, TYPE(SwFrm) );
- }
- {
- rDstDesc.GetLeft().ModifyBroadcast( &aInfo, 0, TYPE(SwFrm) );
- }
- {
- rDstDesc.GetFirstMaster().ModifyBroadcast( &aInfo, 0, TYPE(SwFrm) );
- }
- {
- rDstDesc.GetFirstLeft().ModifyBroadcast( &aInfo, 0, TYPE(SwFrm) );
- }
+ rDstDesc.GetMaster().CallSwClientNotify(aHint);
+ rDstDesc.GetLeft().CallSwClientNotify(aHint);
+ rDstDesc.GetFirstMaster().CallSwClientNotify(aHint);
+ rDstDesc.GetFirstLeft().CallSwClientNotify(aHint);
}
}
diff --git a/sw/source/core/inc/pagefrm.hxx b/sw/source/core/inc/pagefrm.hxx
index f98ad4f..ad3894e 100644
--- a/sw/source/core/inc/pagefrm.hxx
+++ b/sw/source/core/inc/pagefrm.hxx
@@ -104,6 +104,7 @@ class SwPageFrm: public SwFtnBossFrm
protected:
virtual void MakeAll() SAL_OVERRIDE;
virtual void Modify( const SfxPoolItem*, const SfxPoolItem* ) SAL_OVERRIDE;
+ virtual void SwClientNotify(const SwModify&, const SfxHint&) SAL_OVERRIDE;
public:
DECL_FIXEDMEMPOOL_NEWDEL(SwPageFrm)
diff --git a/sw/source/core/layout/pagechg.cxx b/sw/source/core/layout/pagechg.cxx
index ac888b8..90fdc81 100644
--- a/sw/source/core/layout/pagechg.cxx
+++ b/sw/source/core/layout/pagechg.cxx
@@ -525,6 +525,24 @@ void SwPageFrm::Modify( const SfxPoolItem* pOld, const SfxPoolItem * pNew )
}
}
+
+void SwPageFrm::SwClientNotify(const SwModify& rModify, const SfxHint& rHint)
+{
+ if(typeid(sw::PageFootnoteHint) == typeid(rHint))
+ {
+ // currently the savest way:
+ static_cast<SwRootFrm*>(GetUpper())->SetSuperfluous();
+ SetMaxFtnHeight(pDesc->GetFtnInfo().GetHeight());
+ if(!GetMaxFtnHeight())
+ SetMaxFtnHeight(LONG_MAX);
+ SetColMaxFtnHeight();
+ // here, the page might be destroyed:
+ static_cast<SwRootFrm*>(GetUpper())->RemoveFtns(0, false, true);
+ }
+ else
+ SwClient::SwClientNotify(rModify, rHint);
+}
+
void SwPageFrm::_UpdateAttr( const SfxPoolItem *pOld, const SfxPoolItem *pNew,
sal_uInt8 &rInvFlags,
SwAttrSetChg *pOldSet, SwAttrSetChg *pNewSet )
@@ -632,17 +650,6 @@ void SwPageFrm::_UpdateAttr( const SfxPoolItem *pOld, const SfxPoolItem *pNew,
case RES_TEXTGRID:
rInvFlags |= 0x60;
break;
-
- case RES_PAGEDESC_FTNINFO:
- // currently the savest way:
- static_cast<SwRootFrm*>(GetUpper())->SetSuperfluous();
- SetMaxFtnHeight( pDesc->GetFtnInfo().GetHeight() );
- if ( !GetMaxFtnHeight() )
- SetMaxFtnHeight( LONG_MAX );
- SetColMaxFtnHeight();
- // here, the page might be destroyed:
- static_cast<SwRootFrm*>(GetUpper())->RemoveFtns( 0, false, true );
- break;
case RES_FRAMEDIR :
CheckDirChange();
break;
commit d677599025090867fa7d4f418cd3f402ecb19e2b
Author: Bjoern Michaelsen <bjoern.michaelsen at canonical.com>
Date: Tue Mar 24 23:03:09 2015 +0100
also test HasOnlyOneListener and HasWriterListeners
Change-Id: Iad352a07aa0bb04c031a16fe89d6a83e2502bcf1
diff --git a/sw/qa/core/uwriter.cxx b/sw/qa/core/uwriter.cxx
index 1e0f985..6b2bd19 100644
--- a/sw/qa/core/uwriter.cxx
+++ b/sw/qa/core/uwriter.cxx
@@ -1431,12 +1431,19 @@ void SwDocTest::testClientModify()
TestClient aClient1, aClient2;
OtherTestClient aOtherClient1;
// test client registration
+ CPPUNIT_ASSERT(!aMod.HasWriterListeners());
+ CPPUNIT_ASSERT(!aMod.HasOnlyOneListener());
CPPUNIT_ASSERT_EQUAL(aClient1.GetRegisteredIn(),static_cast<SwModify*>(nullptr));
CPPUNIT_ASSERT_EQUAL(aClient2.GetRegisteredIn(),static_cast<SwModify*>(nullptr));
+ CPPUNIT_ASSERT_EQUAL(aClient2.GetRegisteredIn(),static_cast<SwModify*>(nullptr));
aMod.Add(&aClient1);
+ CPPUNIT_ASSERT(aMod.HasWriterListeners());
+ CPPUNIT_ASSERT(aMod.HasOnlyOneListener());
aMod.Add(&aClient2);
CPPUNIT_ASSERT_EQUAL(aClient1.GetRegisteredIn(),static_cast<SwModify*>(&aMod));
CPPUNIT_ASSERT_EQUAL(aClient2.GetRegisteredIn(),static_cast<SwModify*>(&aMod));
+ CPPUNIT_ASSERT(aMod.HasWriterListeners());
+ CPPUNIT_ASSERT(!aMod.HasOnlyOneListener());
// test broadcast
aMod.ModifyBroadcast(nullptr, nullptr);
CPPUNIT_ASSERT_EQUAL(aClient1.m_nModifyCount,1);
commit abb863a3320d07b0b1616f81e4c2e2ec082245b7
Author: Bjoern Michaelsen <bjoern.michaelsen at canonical.com>
Date: Tue Mar 24 22:50:34 2015 +0100
rename IsLastDepend HasOnlyOneListener
Change-Id: Ibb2a3ee596402661f2c593754061deb8c54a2f76
diff --git a/sw/inc/calbck.hxx b/sw/inc/calbck.hxx
index 04cd54b..e64d7ca 100644
--- a/sw/inc/calbck.hxx
+++ b/sw/inc/calbck.hxx
@@ -208,7 +208,7 @@ public:
bool IsInSwFntCache() const { return m_bInSwFntCache; }
void CheckCaching( const sal_uInt16 nWhich );
- bool IsLastDepend() { return m_pWriterListeners && m_pWriterListeners->IsLast(); }
+ bool HasOnlyOneListener() { return m_pWriterListeners && m_pWriterListeners->IsLast(); }
};
// SwDepend
diff --git a/sw/source/core/doc/tblrwcl.cxx b/sw/source/core/doc/tblrwcl.cxx
index 1e3eaac..ceef574 100644
--- a/sw/source/core/doc/tblrwcl.cxx
+++ b/sw/source/core/doc/tblrwcl.cxx
@@ -4449,7 +4449,7 @@ void SwShareBoxFmts::ChangeFrmFmt( SwTableBox* pBox, SwTableLine* pLn,
pOld->Add( &aCl );
pLn->ChgFrmFmt( static_cast<SwTableLineFmt*>(&rFmt) );
}
- if( pOld && pOld->IsLastDepend() )
+ if( pOld && pOld->HasOnlyOneListener() )
{
RemoveFormat( *pOld );
delete pOld;
diff --git a/sw/source/core/fields/ddefld.cxx b/sw/source/core/fields/ddefld.cxx
index dd89ca6..025ecc3 100644
--- a/sw/source/core/fields/ddefld.cxx
+++ b/sw/source/core/fields/ddefld.cxx
@@ -378,7 +378,7 @@ SwDDEField::SwDDEField( SwDDEFieldType* pInitType )
SwDDEField::~SwDDEField()
{
- if( GetTyp()->IsLastDepend() )
+ if( GetTyp()->HasOnlyOneListener() )
static_cast<SwDDEFieldType*>(GetTyp())->Disconnect();
}
diff --git a/sw/source/core/fields/ddetbl.cxx b/sw/source/core/fields/ddetbl.cxx
index 277438e..268f248 100644
--- a/sw/source/core/fields/ddetbl.cxx
+++ b/sw/source/core/fields/ddetbl.cxx
@@ -71,7 +71,7 @@ SwDDETable::~SwDDETable()
pFldTyp->DecRefCnt();
// If it is the last dependent of the "deleted field" than delete it finally
- if( pFldTyp->IsDeleted() && pFldTyp->IsLastDepend() )
+ if( pFldTyp->IsDeleted() && pFldTyp->HasOnlyOneListener() )
{
pFldTyp->Remove( &aDepend );
delete pFldTyp;
diff --git a/sw/source/core/layout/colfrm.cxx b/sw/source/core/layout/colfrm.cxx
index e139895..c012fea 100644
--- a/sw/source/core/layout/colfrm.cxx
+++ b/sw/source/core/layout/colfrm.cxx
@@ -45,7 +45,7 @@ SwColumnFrm::~SwColumnFrm()
{
SwFrmFmt *pFmt = GetFmt();
SwDoc *pDoc;
- if ( !(pDoc = pFmt->GetDoc())->IsInDtor() && pFmt->IsLastDepend() )
+ if ( !(pDoc = pFmt->GetDoc())->IsInDtor() && pFmt->HasOnlyOneListener() )
{
//I'm the only one, delete the format.
//Get default format before, so the base class can cope with it.
diff --git a/sw/source/core/txtnode/atrfld.cxx b/sw/source/core/txtnode/atrfld.cxx
index 34aee5e..b3a3b31 100644
--- a/sw/source/core/txtnode/atrfld.cxx
+++ b/sw/source/core/txtnode/atrfld.cxx
@@ -123,7 +123,7 @@ SwFmtFld::~SwFmtFld()
delete mpField;
// bei einige FeldTypen muessen wir den FeldTypen noch loeschen
- if( pType && pType->IsLastDepend() )
+ if( pType && pType->HasOnlyOneListener() )
{
bool bDel = false;
switch( pType->Which() )
More information about the Libreoffice-commits
mailing list