summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2014-03-27 16:59:17 +0000
committerCaolán McNamara <caolanm@redhat.com>2014-03-28 08:57:47 +0000
commit88005f6f2541e12325c3e00aa438317ed8ab06bd (patch)
tree0c3482dcee377afc140ee7a849cb74cf4a43a11a
parentd0c545bede035f3a4757ac433d919f65d1d06cf0 (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.hxx11
-rw-r--r--sw/qa/core/uwriter.cxx16
-rw-r--r--sw/source/core/txtnode/modeltoviewhelper.cxx54
-rw-r--r--sw/source/core/txtnode/txtedt.cxx2
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