diff options
author | Caolán McNamara <caolanm@redhat.com> | 2014-03-27 16:59:17 +0000 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2014-03-28 08:57:47 +0000 |
commit | 88005f6f2541e12325c3e00aa438317ed8ab06bd (patch) | |
tree | 0c3482dcee377afc140ee7a849cb74cf4a43a11a | |
parent | d0c545bede035f3a4757ac433d919f65d1d06cf0 (diff) |
Related: fdo#73936 allow ModelToViewHelper to not expand footnotes..
but continue to expand fields. No change to anything yet, but
should allow this to be reused in SwTxtNode::GetExpandText
Change-Id: I4dbfc454d498fc85a918b0e43e68c219cbc37a21
-rw-r--r-- | sw/inc/modeltoviewhelper.hxx | 11 | ||||
-rw-r--r-- | sw/qa/core/uwriter.cxx | 16 | ||||
-rw-r--r-- | sw/source/core/txtnode/modeltoviewhelper.cxx | 54 | ||||
-rw-r--r-- | sw/source/core/txtnode/txtedt.cxx | 2 |
4 files changed, 48 insertions, 35 deletions
diff --git a/sw/inc/modeltoviewhelper.hxx b/sw/inc/modeltoviewhelper.hxx index d67110a9157d..82ec6da1833e 100644 --- a/sw/inc/modeltoviewhelper.hxx +++ b/sw/inc/modeltoviewhelper.hxx @@ -61,10 +61,11 @@ class SwTxtNode; 0111: expanding fields + hiding hiddens + hiding redlines gives: AAAABB foo CCCCC foo DDDDD */ -#define PASSTHROUGH 0x0000 -#define EXPANDFIELDS 0x0001 -#define HIDEINVISIBLE 0x0002 -#define HIDEREDLINED 0x0004 +#define PASSTHROUGH 0x0000 +#define EXPANDFIELDS 0x0001 +#define EXPANDFOOTNOTE 0x0002 +#define HIDEINVISIBLE 0x0004 +#define HIDEREDLINED 0x0008 class ModelToViewHelper { @@ -98,7 +99,7 @@ public: ModelPosition() : mnPos(0), mnSubPos(0), mbIsField(false) {} }; - ModelToViewHelper(const SwTxtNode &rNode, sal_uInt16 eMode = EXPANDFIELDS); + ModelToViewHelper(const SwTxtNode &rNode, sal_uInt16 eMode = EXPANDFIELDS | EXPANDFOOTNOTE); ModelToViewHelper() //pass through filter, view == model { } diff --git a/sw/qa/core/uwriter.cxx b/sw/qa/core/uwriter.cxx index bdbeda3199b3..b32e8241bbf6 100644 --- a/sw/qa/core/uwriter.cxx +++ b/sw/qa/core/uwriter.cxx @@ -265,12 +265,18 @@ void SwDocTest::testModelToViewHelper() } { - ModelToViewHelper aModelToViewHelper(*pTxtNode, EXPANDFIELDS); + ModelToViewHelper aModelToViewHelper(*pTxtNode, EXPANDFIELDS | EXPANDFOOTNOTE); OUString sViewText = aModelToViewHelper.getViewText(); CPPUNIT_ASSERT(sViewText == "AAAAA BBBBB foo CCCCC foo DDDDD"); } { + ModelToViewHelper aModelToViewHelper(*pTxtNode, EXPANDFIELDS); + OUString sViewText = aModelToViewHelper.getViewText(); + CPPUNIT_ASSERT(sViewText == "AAAAA BBBBB CCCCC DDDDD"); + } + + { ModelToViewHelper aModelToViewHelper(*pTxtNode, HIDEINVISIBLE); OUString sViewText = aModelToViewHelper.getViewText(); CPPUNIT_ASSERT(sViewText == "AAAAA CCCCC " + OUString(CH_TXTATR_BREAKWORD) + " DDDDD"); @@ -283,13 +289,13 @@ void SwDocTest::testModelToViewHelper() } { - ModelToViewHelper aModelToViewHelper(*pTxtNode, EXPANDFIELDS | HIDEINVISIBLE); + ModelToViewHelper aModelToViewHelper(*pTxtNode, EXPANDFIELDS | HIDEINVISIBLE | EXPANDFOOTNOTE); OUString sViewText = aModelToViewHelper.getViewText(); CPPUNIT_ASSERT(sViewText == "AAAAA CCCCC foo DDDDD"); } { - ModelToViewHelper aModelToViewHelper(*pTxtNode, EXPANDFIELDS | HIDEREDLINED); + ModelToViewHelper aModelToViewHelper(*pTxtNode, EXPANDFIELDS | HIDEREDLINED | EXPANDFOOTNOTE); OUString sViewText = aModelToViewHelper.getViewText(); CPPUNIT_ASSERT(sViewText == "AAAABB foo CCCCC foo DDDDD"); } @@ -305,7 +311,7 @@ void SwDocTest::testModelToViewHelper() } { - ModelToViewHelper aModelToViewHelper(*pTxtNode, EXPANDFIELDS | HIDEINVISIBLE | HIDEREDLINED); + ModelToViewHelper aModelToViewHelper(*pTxtNode, EXPANDFIELDS | HIDEINVISIBLE | HIDEREDLINED | EXPANDFOOTNOTE); OUString sViewText = aModelToViewHelper.getViewText(); CPPUNIT_ASSERT(sViewText == "AAAACCCCC foo DDDDD"); } @@ -325,7 +331,7 @@ void SwDocTest::testModelToViewHelper() CPPUNIT_ASSERT(pTxtNode->GetTxt().getLength() == 11); { - ModelToViewHelper aModelToViewHelper(*pTxtNode, EXPANDFIELDS); + ModelToViewHelper aModelToViewHelper(*pTxtNode, EXPANDFIELDS | EXPANDFOOTNOTE); OUString sViewText = aModelToViewHelper.getViewText(); fprintf(stderr, "string is %s\n", OUStringToOString(sViewText, RTL_TEXTENCODING_UTF8).getStr()); CPPUNIT_ASSERT(sViewText == "AAAAABBBBBCCCCC"); diff --git a/sw/source/core/txtnode/modeltoviewhelper.cxx b/sw/source/core/txtnode/modeltoviewhelper.cxx index 0d77cb1c75bc..2a338ad9764c 100644 --- a/sw/source/core/txtnode/modeltoviewhelper.cxx +++ b/sw/source/core/txtnode/modeltoviewhelper.cxx @@ -119,7 +119,7 @@ ModelToViewHelper::ModelToViewHelper(const SwTxtNode &rNode, sal_uInt16 eMode) if (nTrailingShownLen) aBlocks.push_back(block(nShownStart, nTrailingShownLen, true)); - if (eMode & EXPANDFIELDS) + if (eMode & EXPANDFIELDS || eMode & EXPANDFOOTNOTE) { //first the normal fields, get their position in the node and what the text they expand //to is @@ -142,11 +142,15 @@ ModelToViewHelper::ModelToViewHelper(const SwTxtNode &rNode, sal_uInt16 eMode) { case RES_TXTATR_FIELD: case RES_TXTATR_ANNOTATION: - aFieldResult.m_sExpand = - static_cast<SwTxtFld const*>(pAttr)->GetFmtFld().GetField() - ->ExpandField(true); + if (eMode & EXPANDFIELDS) + { + aFieldResult.m_sExpand = + static_cast<SwTxtFld const*>(pAttr)->GetFmtFld().GetField() + ->ExpandField(true); + } break; case RES_TXTATR_FTN: + if (eMode & EXPANDFOOTNOTE) { const SwFmtFtn& rFtn = static_cast<SwTxtFtn const*>(pAttr)->GetFtn(); const SwDoc *pDoc = rNode.GetDoc(); @@ -156,33 +160,35 @@ ModelToViewHelper::ModelToViewHelper(const SwTxtNode &rNode, sal_uInt16 eMode) default: break; } - aFind->m_aAttrs.insert(aFieldResult); } } } - //now get the dropdown formfields, get their position in the node and what the text they expand - //to is - SwPaM aPaM(rNode, 0, rNode, rNode.Len()); - std::vector<sw::mark::IFieldmark*> aDropDowns = - rNode.GetDoc()->getIDocumentMarkAccess()->getDropDownsFor(aPaM); - - for (std::vector<sw::mark::IFieldmark*>::iterator aI = aDropDowns.begin(), aEnd = aDropDowns.end(); - aI != aEnd; ++aI) + if (eMode & EXPANDFIELDS) { - sw::mark::IFieldmark *pMark = *aI; - const sal_Int32 nDummyCharPos = pMark->GetMarkPos().nContent.GetIndex()-1; - if (aHiddenMulti.IsSelected(nDummyCharPos)) - continue; - std::vector<block>::iterator aFind = std::find_if(aBlocks.begin(), aBlocks.end(), - containsPos(nDummyCharPos)); - if (aFind != aBlocks.end()) + //now get the dropdown formfields, get their position in the node and what the text they expand + //to is + SwPaM aPaM(rNode, 0, rNode, rNode.Len()); + std::vector<sw::mark::IFieldmark*> aDropDowns = + rNode.GetDoc()->getIDocumentMarkAccess()->getDropDownsFor(aPaM); + + for (std::vector<sw::mark::IFieldmark*>::iterator aI = aDropDowns.begin(), aEnd = aDropDowns.end(); + aI != aEnd; ++aI) { - FieldResult aFieldResult; - aFieldResult.m_nFieldPos = nDummyCharPos; - aFieldResult.m_sExpand = sw::mark::ExpandFieldmark(pMark); - aFind->m_aAttrs.insert(aFieldResult); + sw::mark::IFieldmark *pMark = *aI; + const sal_Int32 nDummyCharPos = pMark->GetMarkPos().nContent.GetIndex()-1; + if (aHiddenMulti.IsSelected(nDummyCharPos)) + continue; + std::vector<block>::iterator aFind = std::find_if(aBlocks.begin(), aBlocks.end(), + containsPos(nDummyCharPos)); + if (aFind != aBlocks.end()) + { + FieldResult aFieldResult; + aFieldResult.m_nFieldPos = nDummyCharPos; + aFieldResult.m_sExpand = sw::mark::ExpandFieldmark(pMark); + aFind->m_aAttrs.insert(aFieldResult); + } } } } diff --git a/sw/source/core/txtnode/txtedt.cxx b/sw/source/core/txtnode/txtedt.cxx index 81676390aba2..733899596ded 100644 --- a/sw/source/core/txtnode/txtedt.cxx +++ b/sw/source/core/txtnode/txtedt.cxx @@ -1980,7 +1980,7 @@ bool SwTxtNode::CountWords( SwDocStat& rStat, } // ConversionMap to expand fields, remove invisible and redline deleted text for scanner - const ModelToViewHelper aConversionMap(*this, EXPANDFIELDS | HIDEINVISIBLE | HIDEREDLINED); + const ModelToViewHelper aConversionMap(*this, EXPANDFIELDS | EXPANDFOOTNOTE | HIDEINVISIBLE | HIDEREDLINED); OUString aExpandText = aConversionMap.getViewText(); // map start and end points onto the ConversionMap |