diff options
-rw-r--r-- | sw/inc/authfld.hxx | 2 | ||||
-rw-r--r-- | sw/source/core/fields/authfld.cxx | 5 | ||||
-rw-r--r-- | sw/source/ui/fldui/fldmgr.cxx | 32 |
3 files changed, 27 insertions, 12 deletions
diff --git a/sw/inc/authfld.hxx b/sw/inc/authfld.hxx index 5315806f41..cb8ac0733b 100644 --- a/sw/inc/authfld.hxx +++ b/sw/inc/authfld.hxx @@ -118,7 +118,7 @@ public: void GetAllEntryIdentifiers( SvStringsDtor& rToFill )const; const SwAuthEntry* GetEntryByIdentifier(const String& rIdentifier)const; - void ChangeEntryContent(const SwAuthEntry* pNewEntry); + bool ChangeEntryContent(const SwAuthEntry* pNewEntry); // import interface USHORT AppendField(const SwAuthEntry& rInsert); long GetHandle(USHORT nPos); diff --git a/sw/source/core/fields/authfld.cxx b/sw/source/core/fields/authfld.cxx index 2914f3ed7c..281de8b636 100644 --- a/sw/source/core/fields/authfld.cxx +++ b/sw/source/core/fields/authfld.cxx @@ -288,8 +288,9 @@ const SwAuthEntry* SwAuthorityFieldType::GetEntryByIdentifier( /* -----------------------------21.12.99 13:20-------------------------------- ---------------------------------------------------------------------------*/ -void SwAuthorityFieldType::ChangeEntryContent(const SwAuthEntry* pNewEntry) +bool SwAuthorityFieldType::ChangeEntryContent(const SwAuthEntry* pNewEntry) { + bool bChanged = false; for( USHORT j = 0; j < m_pDataArr->Count(); ++j ) { SwAuthEntry* pTemp = m_pDataArr->GetObject(j); @@ -299,9 +300,11 @@ void SwAuthorityFieldType::ChangeEntryContent(const SwAuthEntry* pNewEntry) for(USHORT i = 0; i < AUTH_FIELD_END; i++) pTemp->SetAuthorField((ToxAuthorityField) i, pNewEntry->GetAuthorField((ToxAuthorityField)i)); + bChanged = true; break; } } + return bChanged; } /*-- 11.10.99 08:49:22--------------------------------------------------- Description: appends a new entry (if new) and returns the array position diff --git a/sw/source/ui/fldui/fldmgr.cxx b/sw/source/ui/fldui/fldmgr.cxx index d1d260be0e..289b4ab7bb 100644 --- a/sw/source/ui/fldui/fldmgr.cxx +++ b/sw/source/ui/fldui/fldmgr.cxx @@ -31,9 +31,7 @@ // MARKER(update_precomp.py): autogen include statement, do not remove #include "precompiled_sw.hxx" -#ifndef _CMDID_H #include <cmdid.h> -#endif #include <hintids.hxx> #include <svtools/stritem.hxx> #include <com/sun/star/lang/XMultiServiceFactory.hpp> @@ -63,21 +61,15 @@ #include <svtools/zforlist.hxx> #include <svtools/zformat.hxx> #include <vcl/mnemonic.hxx> -#ifndef _VIEW_HXX #include <view.hxx> -#endif #include <wrtsh.hxx> // Actives Fenster #include <doc.hxx> // Actives Fenster -#ifndef _DOCSH_HXX #include <docsh.hxx> // Actives Fenster -#endif #include <swmodule.hxx> #include <charatr.hxx> #include <fmtinfmt.hxx> #include <cellatr.hxx> -#ifndef _DBMGR_HXX #include <dbmgr.hxx> -#endif #include <shellres.hxx> #include <fldbas.hxx> #include <docufld.hxx> @@ -92,9 +84,8 @@ #include <fldmgr.hxx> #include <crsskip.hxx> #include <flddropdown.hxx> -#ifndef _FLDUI_HRC #include <fldui.hrc> -#endif +#include <tox.hxx> using rtl::OUString; using namespace com::sun::star::uno; @@ -1552,6 +1543,27 @@ void SwFldMgr::UpdateCurFld(ULONG nFormat, bSetPar1 = bSetPar2 = FALSE; } break; + case TYP_AUTHORITY : + { + //#i99069# changes to a bibliography field should change the field type + SwAuthorityField* pAuthorityField = static_cast<SwAuthorityField*>(pTmpFld); + SwAuthorityFieldType* pAuthorityType = static_cast<SwAuthorityFieldType*>(pType); + SwAuthEntry aTempEntry; + for( USHORT i = 0; i < AUTH_FIELD_END; ++i ) + aTempEntry.SetAuthorField( (ToxAuthorityField)i, + rPar1.GetToken( i, TOX_STYLE_DELIMITER )); + if( pAuthorityType->ChangeEntryContent( &aTempEntry ) ) + { + pType->UpdateFlds(); + pSh->SetModified(); + } + + if( aTempEntry.GetAuthorField( AUTH_FIELD_IDENTIFIER ) == + pAuthorityField->GetFieldText( AUTH_FIELD_IDENTIFIER ) ) + bSetPar1 = FALSE; //otherwise it's a new or changed entry, the field needs to be updated + bSetPar2 = FALSE; + } + break; } // Format setzen |