summaryrefslogtreecommitdiff
path: root/sw/source/core/tox/tox.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'sw/source/core/tox/tox.cxx')
-rw-r--r--sw/source/core/tox/tox.cxx34
1 files changed, 27 insertions, 7 deletions
diff --git a/sw/source/core/tox/tox.cxx b/sw/source/core/tox/tox.cxx
index ddf9a2563a4b..5779b985346d 100644
--- a/sw/source/core/tox/tox.cxx
+++ b/sw/source/core/tox/tox.cxx
@@ -50,6 +50,7 @@
#include <paratr.hxx>
#include <svx/tstpitem.hxx>
#include <SwStyleNameMapper.hxx>
+#include <hints.hxx> // SwPtrMsgPoolItem
// -> #i21237#
#include <algorithm>
@@ -176,10 +177,11 @@ SwFormTokens lcl_GetAuthPattern(USHORT nTypeId)
--------------------------------------------------------------------*/
- // Konstruktor fuers Default vom Attribut-Pool
+/// pool default constructor
SwTOXMark::SwTOXMark()
- : SfxPoolItem( RES_TXTATR_TOXMARK ),
- SwClient( 0 ),
+ : SfxPoolItem( RES_TXTATR_TOXMARK )
+ , SwModify( 0 )
+ ,
pTxtAttr( 0 ),
bAutoGenerated(FALSE),
bMainEntry(FALSE)
@@ -188,8 +190,9 @@ SwTOXMark::SwTOXMark()
SwTOXMark::SwTOXMark( const SwTOXType* pTyp )
- : SfxPoolItem( RES_TXTATR_TOXMARK ),
- SwClient( (SwModify*)pTyp ),
+ : SfxPoolItem( RES_TXTATR_TOXMARK )
+ , SwModify( const_cast<SwTOXType*>(pTyp) )
+ ,
pTxtAttr( 0 ), nLevel( 0 ),
bAutoGenerated(FALSE),
bMainEntry(FALSE)
@@ -198,8 +201,9 @@ SwTOXMark::SwTOXMark( const SwTOXType* pTyp )
SwTOXMark::SwTOXMark( const SwTOXMark& rCopy )
- : SfxPoolItem( RES_TXTATR_TOXMARK ),
- SwClient((SwModify*)rCopy.GetRegisteredIn()),
+ : SfxPoolItem( RES_TXTATR_TOXMARK )
+ , SwModify(rCopy.pRegisteredIn)
+ ,
aPrimaryKey( rCopy.aPrimaryKey ), aSecondaryKey( rCopy.aSecondaryKey ),
aTextReading( rCopy.aTextReading ),
aPrimaryKeyReading( rCopy.aPrimaryKeyReading ),
@@ -230,6 +234,22 @@ SfxPoolItem* SwTOXMark::Clone( SfxItemPool* ) const
return new SwTOXMark( *this );
}
+void SwTOXMark::Modify(SfxPoolItem* pOld, SfxPoolItem* pNew)
+{
+ SwModify::Modify(pOld, pNew);
+ if (pOld && (RES_REMOVE_UNO_OBJECT == pOld->Which()))
+ { // invalidate cached uno object
+ SetXTOXMark(::com::sun::star::uno::Reference<
+ ::com::sun::star::text::XDocumentIndexMark>(0));
+ }
+}
+
+void SwTOXMark::InvalidateTOXMark()
+{
+ SwPtrMsgPoolItem aMsgHint( RES_REMOVE_UNO_OBJECT,
+ &static_cast<SwModify&>(*this) ); // cast to base class!
+ Modify(&aMsgHint, &aMsgHint);
+}
String SwTOXMark::GetText() const
{