summaryrefslogtreecommitdiff
path: root/sw/source/core/fields/chpfld.cxx
diff options
context:
space:
mode:
authorJian Hong Cheng <chengjh@apache.org>2012-09-12 04:50:38 +0000
committerCaolán McNamara <caolanm@redhat.com>2013-06-05 11:12:15 +0100
commit6319803762d051c4aa645692cde7245a1bbcf7ee (patch)
treedcf36a1ad4b122875070072813a265e3090c2d39 /sw/source/core/fields/chpfld.cxx
parenta05c0cfa40001aa1f4247a4e9f1fcefad7e7cf88 (diff)
Resolves: #i120759# Bookmark value changed when opening the doc file
* sw/source/core/fields/chpfld.cxx MS Word Binary compatibility Patch by: Fan Zheng,<zheng.easyfan@gmail.com> Found by: dongjun zong,<zongdj001@gmail.com> Review by: Jian Hong Cheng,<chengjh@apache.org> (cherry picked from commit 6b6ccbcac76eb416b4ece896714d20280761598b) Change-Id: I42461863f7e880f7b9387ca08ce66fb3dad938a0
Diffstat (limited to 'sw/source/core/fields/chpfld.cxx')
-rw-r--r--sw/source/core/fields/chpfld.cxx39
1 files changed, 29 insertions, 10 deletions
diff --git a/sw/source/core/fields/chpfld.cxx b/sw/source/core/fields/chpfld.cxx
index 1af94f78f818..955fb71fd1ba 100644
--- a/sw/source/core/fields/chpfld.cxx
+++ b/sw/source/core/fields/chpfld.cxx
@@ -112,6 +112,35 @@ void SwChapterField::ChangeExpansion(const SwFrm* pFrm,
void SwChapterField::ChangeExpansion(const SwTxtNode &rTxtNd, sal_Bool bSrchNum)
{
+ //i120759,this function is for both the reference chapter field and normal chapter field
+ //bSrchNum can distinguish the two types,to the latter type,the outline num rule is must...
+ sNumber = aEmptyStr;
+ sTitle = aEmptyStr;
+ sPost = aEmptyStr;
+ sPre = aEmptyStr;
+ //The reference chapter field of normal num rule will be handled in this code segment
+ if (bSrchNum && !rTxtNd.IsOutline())
+ {
+ SwNumRule* pRule(rTxtNd.GetNumRule());
+ if (rTxtNd.IsCountedInList() && pRule)
+ {
+ sNumber = rTxtNd.GetNumString(false);
+ const SwNumFmt& rNFmt = pRule->Get(static_cast<unsigned short>(rTxtNd.GetActualListLevel()));
+ sPost = rNFmt.GetSuffix();
+ sPre = rNFmt.GetPrefix();
+ }
+ else
+ {
+ sNumber = String("??", RTL_TEXTENCODING_ASCII_US);
+ }
+ sTitle = rTxtNd.GetExpandTxt();
+
+ for( xub_StrLen i = 0; i < sTitle.Len(); ++i )
+ if( ' ' > sTitle.GetChar( i ) )
+ sTitle.Erase( i--, 1 );
+ }else
+ {
+ //End
SwDoc* pDoc = (SwDoc*)rTxtNd.GetDoc();
const SwTxtNode *pTxtNd = rTxtNd.FindOutlineNodeOfLevel( nLevel );
if( pTxtNd )
@@ -162,13 +191,9 @@ void SwChapterField::ChangeExpansion(const SwTxtNode &rTxtNd, sal_Bool bSrchNum)
sPost = rNFmt.GetSuffix();
sPre = rNFmt.GetPrefix();
}
- else
- sPost = aEmptyStr, sPre = aEmptyStr;
}
else
{
- sPost = aEmptyStr;
- sPre = aEmptyStr;
sNumber = String("??", RTL_TEXTENCODING_ASCII_US);
}
@@ -178,12 +203,6 @@ void SwChapterField::ChangeExpansion(const SwTxtNode &rTxtNd, sal_Bool bSrchNum)
if( ' ' > sTitle.GetChar( i ) )
sTitle.Erase( i--, 1 );
}
- else
- {
- sNumber = aEmptyStr;
- sTitle = aEmptyStr;
- sPost = aEmptyStr;
- sPre = aEmptyStr;
}
}