summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sw/inc/swtypes.hxx3
-rw-r--r--sw/source/core/bastyp/init.cxx1
-rw-r--r--sw/source/core/doc/doctxm.cxx6
-rw-r--r--sw/source/core/inc/txmsrt.hxx3
-rw-r--r--sw/source/core/tox/txmsrt.cxx13
-rw-r--r--sw/source/ui/index/cnttab.cxx3
-rw-r--r--sw/source/ui/uiview/view2.cxx14
7 files changed, 37 insertions, 6 deletions
diff --git a/sw/inc/swtypes.hxx b/sw/inc/swtypes.hxx
index d3c668818495..245c7cce6e31 100644
--- a/sw/inc/swtypes.hxx
+++ b/sw/inc/swtypes.hxx
@@ -170,6 +170,8 @@ SW_DLLPUBLIC Size GetGraphicSizeTwip( const Graphic&, OutputDevice* pOutDev );
// Separator for jumps to different content types in document.
const sal_Unicode cMarkSeparator = '|';
+// Sequences names for jumps are <name of sequence>!<no>
+const sal_Unicode cSequenceMarkSeparator = '!';
extern const sal_Char* pMarkToTable; // Strings are
extern const sal_Char* pMarkToFrame; // in Init.cxx.
extern const sal_Char* pMarkToRegion;
@@ -177,6 +179,7 @@ SW_DLLPUBLIC extern const sal_Char* pMarkToOutline;
extern const sal_Char* pMarkToText;
extern const sal_Char* pMarkToGraphic;
extern const sal_Char* pMarkToOLE;
+extern const sal_Char* pMarkToSequence;
#ifndef DB_DELIM // This is defined in OFA!
#define DB_DELIM ((sal_Unicode)0xff) // Database <-> table separator.
diff --git a/sw/source/core/bastyp/init.cxx b/sw/source/core/bastyp/init.cxx
index 009600c64268..4e5719358ca6 100644
--- a/sw/source/core/bastyp/init.cxx
+++ b/sw/source/core/bastyp/init.cxx
@@ -425,6 +425,7 @@ const sal_Char* pMarkToText = "text";
const sal_Char* pMarkToOutline = "outline";
const sal_Char* pMarkToGraphic = "graphic";
const sal_Char* pMarkToOLE = "ole";
+const sal_Char* pMarkToSequence = "sequence";
std::vector<SvGlobalName*> *pGlobalOLEExcludeList = 0;
diff --git a/sw/source/core/doc/doctxm.cxx b/sw/source/core/doc/doctxm.cxx
index e0157ffeddd8..3cd4f0796730 100644
--- a/sw/source/core/doc/doctxm.cxx
+++ b/sw/source/core/doc/doctxm.cxx
@@ -1263,7 +1263,11 @@ void SwTOXBaseSection::UpdateSequence( const SwTxtNode* pOwnChapterNode )
( !IsFromChapter() ||
::lcl_FindChapterNode( rTxtNode, 0 ) == pOwnChapterNode ) )
{
- SwTOXPara * pNew = new SwTOXPara( rTxtNode, nsSwTOXElement::TOX_SEQUENCE, 1 );
+ const SwSetExpField* pSeqField = dynamic_cast< const SwSetExpField* >( pFmtFld->GetFld() );
+ OUString sName = GetSequenceName();
+ sName += OUString( cSequenceMarkSeparator );
+ sName += OUString::valueOf( sal_Int32( pSeqField->GetSeqNumber() ) );
+ SwTOXPara * pNew = new SwTOXPara( rTxtNode, nsSwTOXElement::TOX_SEQUENCE, 1, sName );
// set indexes if the number or the reference text are to be displayed
if( GetCaptionDisplay() == CAPTION_TEXT )
{
diff --git a/sw/source/core/inc/txmsrt.hxx b/sw/source/core/inc/txmsrt.hxx
index 05cdaf1b9d74..356f49d9fb1c 100644
--- a/sw/source/core/inc/txmsrt.hxx
+++ b/sw/source/core/inc/txmsrt.hxx
@@ -229,7 +229,7 @@ private:
struct SwTOXPara : public SwTOXSortTabBase
{
- SwTOXPara( const SwCntntNode&, SwTOXElement, sal_uInt16 nLevel = FORM_ALPHA_DELIMITTER );
+ SwTOXPara( const SwCntntNode&, SwTOXElement, sal_uInt16 nLevel = FORM_ALPHA_DELIMITTER, OUString sSeqName = OUString() );
virtual ~SwTOXPara() {}
void SetStartIndex( xub_StrLen nSet) { nStartIndex = nSet;}
@@ -246,6 +246,7 @@ private:
sal_uInt16 m_nLevel;
xub_StrLen nStartIndex;
xub_StrLen nEndIndex;
+ OUString m_sSequenceName;
};
struct SwTOXTable : public SwTOXSortTabBase
diff --git a/sw/source/core/tox/txmsrt.cxx b/sw/source/core/tox/txmsrt.cxx
index 20e4975f9ebe..d916be98832c 100644
--- a/sw/source/core/tox/txmsrt.cxx
+++ b/sw/source/core/tox/txmsrt.cxx
@@ -571,12 +571,13 @@ sal_uInt16 SwTOXContent::GetLevel() const
The position must not come from the document, but from the "anchor"!
--------------------------------------------------------------------*/
-SwTOXPara::SwTOXPara( const SwCntntNode& rNd, SwTOXElement eT, sal_uInt16 nLevel )
+SwTOXPara::SwTOXPara( const SwCntntNode& rNd, SwTOXElement eT, sal_uInt16 nLevel, OUString sSeqName )
: SwTOXSortTabBase( TOX_SORT_PARA, &rNd, 0, 0 ),
eType( eT ),
m_nLevel(nLevel),
nStartIndex(0),
- nEndIndex(STRING_LEN)
+ nEndIndex(STRING_LEN),
+ m_sSequenceName( sSeqName )
{
}
@@ -699,6 +700,14 @@ String SwTOXPara::GetURL() const
}
}
break;
+ case nsSwTOXElement::TOX_SEQUENCE:
+ {
+ aTxt = '#';
+ aTxt += m_sSequenceName;
+ aTxt += cMarkSeparator;
+ aTxt.AppendAscii( pMarkToSequence );
+ }
+ break;
default: break;
}
return aTxt;
diff --git a/sw/source/ui/index/cnttab.cxx b/sw/source/ui/index/cnttab.cxx
index 20fa51c7833b..d98b2d8ec603 100644
--- a/sw/source/ui/index/cnttab.cxx
+++ b/sw/source/ui/index/cnttab.cxx
@@ -2091,6 +2091,7 @@ void SwTOXEntryTabPage::ActivatePage( const SfxItemSet& /*rSet*/)
sal_Bool bToxIsAuthorities = TOX_AUTHORITIES == aCurType.eType;
sal_Bool bToxIsIndex = TOX_INDEX == aCurType.eType;
sal_Bool bToxIsContent = TOX_CONTENT == aCurType.eType;
+ sal_Bool bToxIsSequence = TOX_ILLUSTRATIONS == aCurType.eType;
aLevelLB.Clear();
for(sal_uInt16 i = 1; i < m_pCurrentForm->GetFormMax(); i++)
@@ -2223,7 +2224,7 @@ void SwTOXEntryTabPage::ActivatePage( const SfxItemSet& /*rSet*/)
//show or hide controls
aEntryNoPB.Show( bToxIsContent );
- aHyperLinkPB.Show( bToxIsContent );
+ aHyperLinkPB.Show( bToxIsContent || bToxIsSequence );
aRelToStyleCB.Show( !bToxIsAuthorities );
aChapterInfoPB.Show( !bToxIsContent && !bToxIsAuthorities);
aEntryPB.Show( !bToxIsAuthorities );
diff --git a/sw/source/ui/uiview/view2.cxx b/sw/source/ui/uiview/view2.cxx
index 3805b6980511..514f76dc821a 100644
--- a/sw/source/ui/uiview/view2.cxx
+++ b/sw/source/ui/uiview/view2.cxx
@@ -115,6 +115,7 @@
#include <svtools/templdlg.hxx>
#include <dbconfig.hxx>
#include <dbmgr.hxx>
+#include <reffld.hxx>
#include <PostItMgr.hxx>
@@ -1880,7 +1881,7 @@ bool SwView::JumpToSwMark( const String& rMark )
if( sCmp.Len() )
{
- String sName( sMark.Copy( 0, nPos ) );
+ rtl::OUString sName( sMark.Copy( 0, nPos ) );
sCmp.ToLowerAscii();
FlyCntType eFlyType = FLYCNTTYPE_ALL;
@@ -1905,6 +1906,17 @@ bool SwView::JumpToSwMark( const String& rMark )
m_pWrtShell->EnterStdMode();
bRet = m_pWrtShell->GotoTable( sName );
}
+ else if( COMPARE_EQUAL == sCmp.CompareToAscii( pMarkToSequence ) )
+ {
+ m_pWrtShell->EnterStdMode();
+ sal_Int32 nNoPos = sName.indexOf( cSequenceMarkSeparator );
+ if ( nNoPos != -1 )
+ {
+ sal_uInt16 nSeqNo = sName.copy( nNoPos + 1 ).toInt32();
+ sName = sName.copy( 0, nNoPos );
+ m_pWrtShell->GotoRefMark( sName, REF_SEQUENCEFLD, nSeqNo );
+ }
+ }
else if( COMPARE_EQUAL == sCmp.CompareToAscii( pMarkToText ) )
{
// Normale Textsuche