From 4e0118aba0d41008c1a31b1cdc7ce7596b894ae2 Mon Sep 17 00:00:00 2001 From: Caolán McNamara Date: Thu, 27 Mar 2014 20:22:24 +0000 Subject: Related: fdo#73936 use ModelToViewHelper to expand SwTxtNodes ModelToViewHelper knows about formfield dropdown lists so their content gets expanded, which means that in the spelling dialog the dropdowns get shown and are detected as fields Change-Id: If23d44c6189a73d04205816a32e863161f7f38ef --- sw/source/core/txtnode/ndtxt.cxx | 14 ++++++++++---- sw/source/core/txtnode/txtedt.cxx | 8 ++++---- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/sw/source/core/txtnode/ndtxt.cxx b/sw/source/core/txtnode/ndtxt.cxx index 4812b4d32c9f..1f1045666b36 100644 --- a/sw/source/core/txtnode/ndtxt.cxx +++ b/sw/source/core/txtnode/ndtxt.cxx @@ -3109,10 +3109,16 @@ OUString SwTxtNode::GetExpandTxt( const sal_Int32 nIdx, const bool bWithFtn ) const { - OUStringBuffer aTxt( - (nLen == -1) ? GetTxt().copy(nIdx) : GetTxt().copy(nIdx, nLen)); - sal_Int32 nTxtStt = nIdx; - Replace0xFF(*this, aTxt, nTxtStt, aTxt.getLength(), true, bWithFtn ); + sal_uInt16 eMode = EXPANDFIELDS; + if (bWithFtn) + eMode |= EXPANDFOOTNOTE; + + ModelToViewHelper aConversionMap(*this, eMode); + OUString aExpandText = aConversionMap.getViewText(); + const sal_Int32 nExpandBegin = aConversionMap.ConvertToViewPosition( nIdx ); + sal_Int32 nEnd = nLen == -1 ? GetTxt().getLength() : nIdx + nLen; + const sal_Int32 nExpandEnd = aConversionMap.ConvertToViewPosition( nEnd ); + OUStringBuffer aTxt(aExpandText.copy(nExpandBegin, nExpandEnd-nExpandBegin)); // remove dummy characters of Input Fields comphelper::string::remove(aTxt, CH_TXT_ATR_INPUTFIELDSTART); diff --git a/sw/source/core/txtnode/txtedt.cxx b/sw/source/core/txtnode/txtedt.cxx index 733899596ded..8cb04356a4ff 100644 --- a/sw/source/core/txtnode/txtedt.cxx +++ b/sw/source/core/txtnode/txtedt.cxx @@ -1983,15 +1983,15 @@ bool SwTxtNode::CountWords( SwDocStat& rStat, const ModelToViewHelper aConversionMap(*this, EXPANDFIELDS | EXPANDFOOTNOTE | HIDEINVISIBLE | HIDEREDLINED); OUString aExpandText = aConversionMap.getViewText(); - // map start and end points onto the ConversionMap - const sal_Int32 nExpandBegin = aConversionMap.ConvertToViewPosition( nStt ); - const sal_Int32 nExpandEnd = aConversionMap.ConvertToViewPosition( nEnd ); - if (aExpandText.isEmpty() && !bCountNumbering) { return false; } + // map start and end points onto the ConversionMap + const sal_Int32 nExpandBegin = aConversionMap.ConvertToViewPosition( nStt ); + const sal_Int32 nExpandEnd = aConversionMap.ConvertToViewPosition( nEnd ); + //do the count // all counts exclude hidden paras and hidden+redlined within para // definition of space/white chars in SwScanner (and BreakIter!) -- cgit v1.2.3