lotuswordpro/qa/cppunit/data/fail/CVE-2012-1770-1.lwp |binary sfx2/inc/sfx2/docfile.hxx | 9 --- sfx2/source/doc/docfile.cxx | 29 ------------ solenv/bin/make_installer.pl | 2 svtools/source/misc/embedhlp.cxx | 25 +++++++--- sw/inc/modeltoviewhelper.hxx | 33 +++++++------- sw/inc/ndtxt.hxx | 3 - sw/inc/swscanner.hxx | 4 - sw/inc/unoflatpara.hxx | 2 sw/inc/unotextmarkup.hxx | 7 +-- sw/qa/core/swdoc-test.cxx | 2 sw/source/core/doc/docedt.cxx | 22 ++++----- sw/source/core/edit/edlingu.cxx | 19 +++----- sw/source/core/text/porlay.cxx | 2 sw/source/core/txtnode/modeltoviewhelper.cxx | 21 ++------- sw/source/core/txtnode/ndtxt.cxx | 28 +++--------- sw/source/core/txtnode/txtedt.cxx | 41 ++++++++---------- sw/source/core/unocore/unoflatpara.cxx | 25 ++++------ sw/source/core/unocore/unotextmarkup.cxx | 29 ++++++------ unotest/inc/unotest/filters-test.hxx | 5 +- unotest/source/cpp/filters-test.cxx | 15 ++++-- unusedcode.easy | 15 ------ 22 files changed, 138 insertions(+), 200 deletions(-)
New commits: commit 97e3a9a3a62e52821f5f3389931d109a9070ec40 Author: Caolán McNamara <caol...@redhat.com> Date: Thu Jul 26 16:36:47 2012 +0100 callcatcher: update used code post-stlification Change-Id: Ife742cfbb5295fafe36ba608744a3b3e356cc061 diff --git a/sfx2/inc/sfx2/docfile.hxx b/sfx2/inc/sfx2/docfile.hxx index 044ae4b..563fd0f 100644 --- a/sfx2/inc/sfx2/docfile.hxx +++ b/sfx2/inc/sfx2/docfile.hxx @@ -100,13 +100,7 @@ public: SfxMedium( const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >& xStorage, const String& rBaseURL, - const SfxItemSet* pSet=0, - sal_Bool bRoot = sal_False ); - SfxMedium( const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >& xStorage, - const String& rBaseURL, - const String& rTypeName, - const SfxItemSet* pSet=0, - sal_Bool bRoot = sal_False ); + const SfxItemSet* pSet=0 ); SfxMedium( const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& aArgs ); ~SfxMedium(); @@ -158,7 +152,6 @@ public: void CloseInStream(); sal_Bool CloseOutStream(); - sal_Bool IsRoot() const; void CloseStorage(); StreamMode GetOpenMode() const; diff --git a/sfx2/source/doc/docfile.cxx b/sfx2/source/doc/docfile.cxx index b0e0640..9924243 100644 --- a/sfx2/source/doc/docfile.cxx +++ b/sfx2/source/doc/docfile.cxx @@ -260,7 +260,6 @@ public: bool m_bGotDateTime:1; bool m_bRemoveBackup:1; bool m_bOriginallyReadOnly:1; - bool m_bRoot:1; bool m_bTriedStorage:1; bool m_bRemote:1; bool m_bInputStreamIsReadOnly:1; @@ -334,7 +333,6 @@ SfxMedium_Impl::SfxMedium_Impl( SfxMedium* pAntiImplP ) : m_bGotDateTime( false ), m_bRemoveBackup( false ), m_bOriginallyReadOnly(false), - m_bRoot(false), m_bTriedStorage(false), m_bRemote(false), m_bInputStreamIsReadOnly(false), @@ -1436,11 +1434,6 @@ void SfxMedium::CloseZipStorage_Impl() } } -sal_Bool SfxMedium::IsRoot() const -{ - return pImp->m_bRoot; -} - void SfxMedium::CloseStorage() { if ( pImp->xStorage.is() ) @@ -2904,11 +2897,9 @@ SfxMedium::SfxMedium( const ::com::sun::star::uno::Sequence< ::com::sun::star::b //------------------------------------------------------------------ -SfxMedium::SfxMedium( const uno::Reference < embed::XStorage >& rStor, const String& rBaseURL, const SfxItemSet* p, sal_Bool bRootP ) : +SfxMedium::SfxMedium( const uno::Reference < embed::XStorage >& rStor, const String& rBaseURL, const SfxItemSet* p ) : pImp(new SfxMedium_Impl(this)) { - pImp->m_bRoot = bRootP; - String aType = SfxFilter::GetTypeFromStorage( rStor ); pImp->m_pFilter = SFX_APP()->GetFilterMatcher().GetFilter4EA( aType ); DBG_ASSERT( pImp->m_pFilter, "No Filter for storage found!" ); @@ -2923,24 +2914,6 @@ SfxMedium::SfxMedium( const uno::Reference < embed::XStorage >& rStor, const Str GetItemSet()->Put( *p ); } -SfxMedium::SfxMedium( const uno::Reference < embed::XStorage >& rStor, const String& rBaseURL, const String& rTypeName, const SfxItemSet* p, sal_Bool bRootP ) : - pImp(new SfxMedium_Impl(this)) -{ - pImp->m_bRoot = bRootP; - - pImp->m_pFilter = SFX_APP()->GetFilterMatcher().GetFilter4EA( rTypeName ); - DBG_ASSERT( pImp->m_pFilter, "No Filter for storage found!" ); - - Init_Impl(); - pImp->xStorage = rStor; - pImp->bDisposeStorage = false; - - // always take BaseURL first, could be overwritten by ItemSet - GetItemSet()->Put( SfxStringItem( SID_DOC_BASEURL, rBaseURL ) ); - if ( p ) - GetItemSet()->Put( *p ); -} - //------------------------------------------------------------------ SfxMedium::~SfxMedium() diff --git a/unusedcode.easy b/unusedcode.easy index 87728a5..6935075 100755 --- a/unusedcode.easy +++ b/unusedcode.easy @@ -40,7 +40,7 @@ ScVbaFormat<ooo::vba::excel::XStyle>::setNumberFormat(com::sun::star::lang::Loca ScXMLExport::HasDrawPages(com::sun::star::uno::Reference<com::sun::star::sheet::XSpreadsheetDocument>&) ScXMLImport::GetVisibleSheet() SecurityEnvironment_NssImpl::getImplementation(com::sun::star::uno::Reference<com::sun::star::uno::XInterface>) -SfxMedium::SfxMedium(com::sun::star::uno::Reference<com::sun::star::embed::XStorage> const&, String const&, String const&, SfxItemSet const*, unsigned char) +SmRtfExport::HandleUnaryOperation(SmUnHorNode const*, int) SotStorage::GetProperty(String const&, String const&, com::sun::star::uno::Any&) SpinButton::SpinButton(Window*, ResId const&) SrchAttrItemList::Replace(SearchAttrItem const&, unsigned short) @@ -54,7 +54,6 @@ String::String(unsigned short const*, unsigned short) SvPtrarr::Replace(void* const&, unsigned short) SvPtrarr::Replace(void* const*, unsigned short, unsigned short) SvPtrarr::_ForEach(unsigned short, unsigned short, unsigned char (*)(void* const&, void*), void*) -SvStringsISortDtor::Insert(String* const*, unsigned short) SvXMLAutoStylePoolNamesP_Impl::GetPos(rtl::OUString const*) const SvXMLAutoStylePoolNamesP_Impl::Remove(rtl::OUString*) SvXMLAutoStylePoolParentsP_Impl::GetPos(SvXMLAutoStylePoolParentP_Impl const*) const @@ -77,9 +76,6 @@ SwBlockNames::Insert(SwBlockName const**, unsigned short) SwBlockNames::Insert(SwBlockNames const*, unsigned short, unsigned short) SwBlockNames::Remove(SwBlockName const*&, unsigned short) SwBlockNames::Remove(unsigned short, unsigned short) -SwOutlineNodes::Insert(SwNode* const&, unsigned short&) -SwOutlineNodes::Insert(SwNode* const*, unsigned short) -SwOutlineNodes::Insert(SwOutlineNodes const*, unsigned short, unsigned short) SwRects::Replace(SwRect const&, unsigned short) SwRects::Replace(SwRect const*, unsigned short, unsigned short) SwRects::_ForEach(unsigned short, unsigned short, unsigned char (*)(SwRect const&, void*), void*) @@ -90,15 +86,6 @@ SwSortElements::Insert(SwSortElement* const*, unsigned short) SwSortElements::Insert(SwSortElements const*, unsigned short, unsigned short) SwSortElements::Remove(SwSortElement* const&, unsigned short) SwSortElements::Remove(unsigned short, unsigned short) -SwSortTableLines::DeleteAndDestroy(unsigned short, unsigned short) -SwSortTableLines::Insert(SwTableLine* const&) -SwSortTableLines::Insert(SwTableLine* const&, unsigned short&) -SwSortTableLines::Insert(SwTableLine* const*, unsigned short) -SwSortTableLines::Remove(SwTableLine* const&, unsigned short) -SwSortTableLines::Remove(unsigned short, unsigned short) -SwTableSortBoxes::DeleteAndDestroy(unsigned short, unsigned short) -SwTableSortBoxes::Insert(SwTableBox* const&, unsigned short&) -SwTableSortBoxes::Insert(SwTableBox* const*, unsigned short) SwXMLTableColumnsSortByWidth_Impl::GetPos(SwXMLTableColumn_Impl const*) const SwXMLTableColumnsSortByWidth_Impl::Remove(SwXMLTableColumn_Impl*) SwpHtEnd::Insert(SwTxtAttr const*&, unsigned short&) commit 3c2c2eb46ec70c82ec63ab7cf8096db4cb4fd8a2 Author: Caolán McNamara <caol...@redhat.com> Date: Thu Jul 26 16:35:43 2012 +0100 discard broken embedded object previews Change-Id: I4f632545d383c4887342aa2959987d4ac3638eb4 diff --git a/svtools/source/misc/embedhlp.cxx b/svtools/source/misc/embedhlp.cxx index 6325a76..135ad30 100644 --- a/svtools/source/misc/embedhlp.cxx +++ b/svtools/source/misc/embedhlp.cxx @@ -560,16 +560,25 @@ SvStream* EmbeddedObjectRef::GetGraphicStream( sal_Bool bUpdate ) const { const sal_Int32 nConstBufferSize = 32000; SvStream *pStream = new SvMemoryStream( 32000, 32000 ); - sal_Int32 nRead=0; - uno::Sequence < sal_Int8 > aSequence ( nConstBufferSize ); - do + try + { + sal_Int32 nRead=0; + uno::Sequence < sal_Int8 > aSequence ( nConstBufferSize ); + do + { + nRead = xStream->readBytes ( aSequence, nConstBufferSize ); + pStream->Write( aSequence.getConstArray(), nRead ); + } + while ( nRead == nConstBufferSize ); + pStream->Seek(0); + return pStream; + } + catch (const uno::Exception& ex) { - nRead = xStream->readBytes ( aSequence, nConstBufferSize ); - pStream->Write( aSequence.getConstArray(), nRead ); + SAL_WARN("svtools", "discarding broken embedded object preview: " << ex.Message); + delete pStream; + xStream.clear(); } - while ( nRead == nConstBufferSize ); - pStream->Seek(0); - return pStream; } } commit 69bb7c732d9b4b80c211b031ff40c500b4b02a40 Author: Caolán McNamara <caol...@redhat.com> Date: Thu Jul 26 14:38:22 2012 +0100 regression test for CVE-2012-1770 Change-Id: I2c51a128437913c3bb0bc7a59774ff117603dc82 diff --git a/lotuswordpro/qa/cppunit/data/fail/CVE-2012-1770-1.lwp b/lotuswordpro/qa/cppunit/data/fail/CVE-2012-1770-1.lwp new file mode 100644 index 0000000..fb4a7e8 Binary files /dev/null and b/lotuswordpro/qa/cppunit/data/fail/CVE-2012-1770-1.lwp differ commit 23826a28f421d82898cf52a894f6e11ca6ae1fc0 Author: Caolán McNamara <caol...@redhat.com> Date: Thu Jul 26 14:26:10 2012 +0100 use EDB as well as CVE as encrypted prefixes Change-Id: I3cb1e4d736ca1627cb0716a9c17ff11b5a837264 diff --git a/unotest/inc/unotest/filters-test.hxx b/unotest/inc/unotest/filters-test.hxx index ab44d81..73cfbe3 100644 --- a/unotest/inc/unotest/filters-test.hxx +++ b/unotest/inc/unotest/filters-test.hxx @@ -40,8 +40,9 @@ enum filterStatus }; /* - * NOTE, any files beginning with CVE- will be assumed to be encrypted using - * arcfour with key 0x435645, this is to silence panicky virus/malware-checkers + * NOTE, any files beginning with CVE- or EDB- will be assumed to be encrypted + * using arcfour with key 0x435645, this is to silence panicky + * virus/malware-checkers * * e.g. m[de]crypt --bare -a arcfour -o hex -k 435645 -s 3 */ diff --git a/unotest/source/cpp/filters-test.cxx b/unotest/source/cpp/filters-test.cxx index 989dd33..f92ce79 100644 --- a/unotest/source/cpp/filters-test.cxx +++ b/unotest/source/cpp/filters-test.cxx @@ -87,7 +87,7 @@ void FiltersTest::recursiveScan(const rtl::OUString &rFilter, const rtl::OUStrin else { rtl::OUString sTmpFile; - bool bCVE = false; + bool bEncrypted = false; sal_Int32 nLastSlash = sURL.lastIndexOf('/'); @@ -97,14 +97,19 @@ void FiltersTest::recursiveScan(const rtl::OUString &rFilter, const rtl::OUStrin if (sURL.getStr()[nLastSlash+1] == '.') continue; - if (sURL.matchAsciiL(RTL_CONSTASCII_STRINGPARAM("CVE"), nLastSlash+1)) - bCVE = true; + if ( + (sURL.matchAsciiL(RTL_CONSTASCII_STRINGPARAM("CVE"), nLastSlash+1)) || + (sURL.matchAsciiL(RTL_CONSTASCII_STRINGPARAM("EDB"), nLastSlash+1)) + ) + { + bEncrypted = true; + } } rtl::OString aRes(rtl::OUStringToOString(sURL, osl_getThreadTextEncoding())); - if (bCVE) + if (bEncrypted) { CPPUNIT_ASSERT(osl::FileBase::E_None == osl::FileBase::createTempFile(NULL, NULL, &sTmpFile)); decode(sURL, sTmpFile); @@ -118,7 +123,7 @@ void FiltersTest::recursiveScan(const rtl::OUString &rFilter, const rtl::OUStrin bool bRes = load(rFilter, sURL, rUserData); sal_uInt32 nEndTime = osl_getGlobalTimer(); - if (bCVE) + if (bEncrypted) CPPUNIT_ASSERT(osl::FileBase::E_None == osl::File::remove(sTmpFile)); fprintf(stderr, "%s,%" SAL_PRIuUINT32"\n", commit 2584a460b5e560fce8719879414311b16b2c63d9 Author: Caolán McNamara <caol...@redhat.com> Date: Thu Jul 26 11:44:28 2012 +0100 just remove logging dir without moaning Change-Id: I66435c5da113711ecc01d85124dab88411232ee5 diff --git a/solenv/bin/make_installer.pl b/solenv/bin/make_installer.pl index 914c791..ea77d9f 100644 --- a/solenv/bin/make_installer.pl +++ b/solenv/bin/make_installer.pl @@ -248,7 +248,7 @@ installer::control::set_addsystemintegration($allvariableshashref); ######################################################## my $oldloggingdir = $loggingdir; -installer::systemactions::remove_empty_directory($oldloggingdir); +installer::systemactions::remove_complete_directory($oldloggingdir); $loggingdir = installer::systemactions::create_directories("logging", ""); $loggingdir = $loggingdir . $installer::globals::separator; $installer::globals::exitlog = $loggingdir; commit 331e4d03a70900bc390b376f4073d0efd868b919 Author: Caolán McNamara <caol...@redhat.com> Date: Fri Jul 20 16:11:08 2012 +0100 refactor ModelToViewHelper, should have unchanged results Change-Id: Ib57f0d6f9491d12ffacada5ec0ae8bc68874c25b diff --git a/sw/inc/modeltoviewhelper.hxx b/sw/inc/modeltoviewhelper.hxx index a1ee88e..c7a80c5 100644 --- a/sw/inc/modeltoviewhelper.hxx +++ b/sw/inc/modeltoviewhelper.hxx @@ -20,10 +20,12 @@ #ifndef _MODELTOVIEWHELPER_HXX #define _MODELTOVIEWHELPER_HXX +#include <rtl/ustring.hxx> #include <sal/types.h> - #include <vector> +class SwTxtNode; + /** Some helpers for converting model strings to view strings. A paragraph string does not have its fields expanded, i.e., they are @@ -33,7 +35,7 @@ helper functions are provided to convert model positions to view positions and vice versa. */ -namespace ModelToViewHelper +class ModelToViewHelper { /** For each field in the model string, there is an entry in the conversion map. The first value of the ConversionMapEntry points to the field @@ -44,6 +46,12 @@ namespace ModelToViewHelper typedef std::pair< sal_uInt32 , sal_uInt32 > ConversionMapEntry; typedef std::vector< ConversionMapEntry > ConversionMap; + ConversionMap m_aMap; + + rtl::OUString m_aRetText; + +public: + /** This struct defines a position in the model string. The 'main' position is given by mnPos. If there's a field located at @@ -59,12 +67,10 @@ namespace ModelToViewHelper ModelPosition() : mnPos(0), mnSubPos(0), mbIsField(false) {} }; - /** Converts a model position into a view position + ModelToViewHelper(const SwTxtNode &rNode); + ModelToViewHelper() {} //pass through filter, view == model - @param pMap - pMap is the conversion map required for the calculation. If pMap is - 0, no conversion takes place, i.e., it is assumed that the model - string is identical to the view string. + /** Converts a model position into a view position @param nPos nPos denotes a position in the model string which should be @@ -77,15 +83,10 @@ namespace ModelToViewHelper nPos is behind the last entry in the conversion map) nPos will be returned. */ - sal_uInt32 ConvertToViewPosition( const ConversionMap* pMap, sal_uInt32 nModelPos ); + sal_uInt32 ConvertToViewPosition( sal_uInt32 nModelPos ) const; /** Converts a view position into a model position - @param pMap - pMap is the conversion map required for the calculation. If pMap is - 0, no conversion takes place, i.e., it is assumed that the model - string is identical to the view string. - @param nPos nPos denotes a position in the view string which should be converted. @@ -97,8 +98,10 @@ namespace ModelToViewHelper model position with mnPos = nPos and mnIsField = false will be returned. */ - ModelPosition ConvertToModelPosition( const ConversionMap* pMap, sal_uInt32 nViewPos ); -} + ModelPosition ConvertToModelPosition( sal_uInt32 nViewPos ) const; + + rtl::OUString getViewText() const { return m_aRetText; } +}; #endif diff --git a/sw/inc/ndtxt.hxx b/sw/inc/ndtxt.hxx index 83b3e2f..39565cf 100644 --- a/sw/inc/ndtxt.hxx +++ b/sw/inc/ndtxt.hxx @@ -699,9 +699,6 @@ public: sal_Bool bWithNum = sal_False, sal_Bool bWithFtn = sal_True, sal_Bool bReplaceTabsWithSpaces = sal_False ) const; - const ModelToViewHelper::ConversionMap* - BuildConversionMap( rtl::OUString& rExpandText ) const; - XubString GetRedlineTxt( xub_StrLen nIdx = 0, xub_StrLen nLen = STRING_LEN, sal_Bool bExpandFlds = sal_False, diff --git a/sw/inc/swscanner.hxx b/sw/inc/swscanner.hxx index 3c05995..f657f23 100644 --- a/sw/inc/swscanner.hxx +++ b/sw/inc/swscanner.hxx @@ -45,7 +45,7 @@ class SwScanner const SwTxtNode& rNode; const rtl::OUString aText; const LanguageType* pLanguage; - const ModelToViewHelper::ConversionMap* pConversionMap; + const ModelToViewHelper& rConversionMap; sal_Int32 nStartPos; sal_Int32 nEndPos; sal_Int32 nBegin; @@ -57,7 +57,7 @@ class SwScanner public: SwScanner( const SwTxtNode& rNd, const rtl::OUString& rTxt, const LanguageType* pLang, - const ModelToViewHelper::ConversionMap* pConvMap, + const ModelToViewHelper& rConvMap, sal_uInt16 nWordType, sal_Int32 nStart, sal_Int32 nEnde, sal_Bool bClip = sal_False ); diff --git a/sw/inc/unoflatpara.hxx b/sw/inc/unoflatpara.hxx index b728dcd..310ff80 100644 --- a/sw/inc/unoflatpara.hxx +++ b/sw/inc/unoflatpara.hxx @@ -52,7 +52,7 @@ class SwXFlatParagraph: public SwXTextMarkup { public: - SwXFlatParagraph( SwTxtNode& rTxtNode, rtl::OUString aExpandText, const ModelToViewHelper::ConversionMap* pConversionMap ); + SwXFlatParagraph( SwTxtNode& rTxtNode, rtl::OUString aExpandText, const ModelToViewHelper& rConversionMap ); virtual ~SwXFlatParagraph(); virtual ::com::sun::star::uno::Any SAL_CALL queryInterface( const ::com::sun::star::uno::Type& aType ) throw(::com::sun::star::uno::RuntimeException); diff --git a/sw/inc/unotextmarkup.hxx b/sw/inc/unotextmarkup.hxx index d918b8d..de7aa15 100644 --- a/sw/inc/unotextmarkup.hxx +++ b/sw/inc/unotextmarkup.hxx @@ -47,7 +47,7 @@ class SwXTextMarkup: public SwClient { public: - SwXTextMarkup( SwTxtNode& rTxtNode, const ModelToViewHelper::ConversionMap* pConversionMap ); + SwXTextMarkup( SwTxtNode& rTxtNode, const ModelToViewHelper& rConversionMap ); virtual ~SwXTextMarkup(); // ::com::sun::star::text::XTextMarkup: @@ -63,11 +63,10 @@ private: protected: //SwClient - virtual void Modify( const SfxPoolItem* pOld, const SfxPoolItem *pNew); + virtual void Modify( const SfxPoolItem* pOld, const SfxPoolItem *pNew); SwTxtNode* mpTxtNode; - const ModelToViewHelper::ConversionMap* mpConversionMap; - + const ModelToViewHelper maConversionMap; }; diff --git a/sw/qa/core/swdoc-test.cxx b/sw/qa/core/swdoc-test.cxx index ae49266..e47b7d1 100644 --- a/sw/qa/core/swdoc-test.cxx +++ b/sw/qa/core/swdoc-test.cxx @@ -238,7 +238,7 @@ void SwDocTest::testSwScanner() { SwScanner aScanner(*pTxtNode, rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Hello World")), - 0, 0, i18n::WordType::DICTIONARY_WORD, 0, + 0, ModelToViewHelper(), i18n::WordType::DICTIONARY_WORD, 0, RTL_CONSTASCII_LENGTH("Hello World")); bool bFirstOk = aScanner.NextWord(); diff --git a/sw/source/core/doc/docedt.cxx b/sw/source/core/doc/docedt.cxx index d33c9dc..11517ca 100644 --- a/sw/source/core/doc/docedt.cxx +++ b/sw/source/core/doc/docedt.cxx @@ -1824,7 +1824,7 @@ bool SwDoc::DeleteRange( SwPaM & rPam ) void lcl_syncGrammarError( SwTxtNode &rTxtNode, linguistic2::ProofreadingResult& rResult, - xub_StrLen /*nBeginGrammarCheck*/, const ModelToViewHelper::ConversionMap* pConversionMap ) + xub_StrLen /*nBeginGrammarCheck*/, const ModelToViewHelper &rConversionMap ) { if( rTxtNode.IsGrammarCheckDirty() ) return; @@ -1836,8 +1836,8 @@ void lcl_syncGrammarError( SwTxtNode &rTxtNode, linguistic2::ProofreadingResult& for( i = 0; i < rResult.aErrors.getLength(); ++i ) { const linguistic2::SingleProofreadingError &rError = rResult.aErrors[i]; - xub_StrLen nStart = (xub_StrLen)ModelToViewHelper::ConvertToModelPosition( pConversionMap, rError.nErrorStart ).mnPos; - xub_StrLen nEnd = (xub_StrLen)ModelToViewHelper::ConvertToModelPosition( pConversionMap, rError.nErrorStart + rError.nErrorLength ).mnPos; + xub_StrLen nStart = (xub_StrLen)rConversionMap.ConvertToModelPosition( rError.nErrorStart ).mnPos; + xub_StrLen nEnd = (xub_StrLen)rConversionMap.ConvertToModelPosition( rError.nErrorStart + rError.nErrorLength ).mnPos; if( i != j ) pArray[j] = pArray[i]; if( pWrong->LookForEntry( nStart, nEnd ) ) @@ -1955,22 +1955,22 @@ uno::Any SwDoc::Spell( SwPaM& rPaM, String aText( ((SwTxtNode*)pNd)->GetTxt().Copy( nBeginGrammarCheck, nEndGrammarCheck - nBeginGrammarCheck ) ); uno::Reference< lang::XComponent > xDoc( ((SwDocShell*)GetDocShell())->GetBaseModel(), uno::UNO_QUERY ); // Expand the string: - rtl::OUString aExpandText; - const ModelToViewHelper::ConversionMap* pConversionMap = - ((SwTxtNode*)pNd)->BuildConversionMap( aExpandText ); + const ModelToViewHelper aConversionMap(*(SwTxtNode*)pNd); + rtl::OUString aExpandText = aConversionMap.getViewText(); + // get XFlatParagraph to use... - uno::Reference< text::XFlatParagraph > xFlatPara = new SwXFlatParagraph( *((SwTxtNode*)pNd), aExpandText, pConversionMap ); + uno::Reference< text::XFlatParagraph > xFlatPara = new SwXFlatParagraph( *((SwTxtNode*)pNd), aExpandText, aConversionMap ); // get error position of cursor in XFlatParagraph linguistic2::ProofreadingResult aResult; sal_Int32 nGrammarErrors; do { - ModelToViewHelper::ConvertToViewPosition( pConversionMap, nBeginGrammarCheck ); + aConversionMap.ConvertToViewPosition( nBeginGrammarCheck ); aResult = xGCIterator->checkSentenceAtPosition( xDoc, xFlatPara, aExpandText, lang::Locale(), nBeginGrammarCheck, -1, -1 ); - lcl_syncGrammarError( *((SwTxtNode*)pNd), aResult, nBeginGrammarCheck, pConversionMap ); + lcl_syncGrammarError( *((SwTxtNode*)pNd), aResult, nBeginGrammarCheck, aConversionMap ); // get suggestions to use for the specific error position nGrammarErrors = aResult.aErrors.getLength(); @@ -1992,8 +1992,8 @@ uno::Any SwDoc::Spell( SwPaM& rPaM, pEndPos->nNode = nCurrNd; pSpellArgs->pStartNode = ((SwTxtNode*)pNd); pSpellArgs->pEndNode = ((SwTxtNode*)pNd); - pSpellArgs->pStartIdx->Assign(((SwTxtNode*)pNd), (xub_StrLen)ModelToViewHelper::ConvertToModelPosition( pConversionMap, rError.nErrorStart ).mnPos ); - pSpellArgs->pEndIdx->Assign(((SwTxtNode*)pNd), (xub_StrLen)ModelToViewHelper::ConvertToModelPosition( pConversionMap, rError.nErrorStart + rError.nErrorLength ).mnPos ); + pSpellArgs->pStartIdx->Assign(((SwTxtNode*)pNd), (xub_StrLen)aConversionMap.ConvertToModelPosition( rError.nErrorStart ).mnPos ); + pSpellArgs->pEndIdx->Assign(((SwTxtNode*)pNd), (xub_StrLen)aConversionMap.ConvertToModelPosition( rError.nErrorStart + rError.nErrorLength ).mnPos ); nCurrNd = nEndNd; } } diff --git a/sw/source/core/edit/edlingu.cxx b/sw/source/core/edit/edlingu.cxx index ffe27d3..c002d56 100644 --- a/sw/source/core/edit/edlingu.cxx +++ b/sw/source/core/edit/edlingu.cxx @@ -1131,17 +1131,16 @@ bool SwEditShell::GetGrammarCorrection( uno::Reference< lang::XComponent > xDoc( pDoc->GetDocShell()->GetBaseModel(), uno::UNO_QUERY ); // Expand the string: - rtl::OUString aExpandText; - const ModelToViewHelper::ConversionMap* pConversionMap = - pNode->BuildConversionMap( aExpandText ); + const ModelToViewHelper aConversionMap(*pNode); + rtl::OUString aExpandText = aConversionMap.getViewText(); // get XFlatParagraph to use... - uno::Reference< text::XFlatParagraph > xFlatPara = new SwXFlatParagraph( *pNode, aExpandText, pConversionMap ); + uno::Reference< text::XFlatParagraph > xFlatPara = new SwXFlatParagraph( *pNode, aExpandText, aConversionMap ); // get error position of cursor in XFlatParagraph - rErrorPosInText = ModelToViewHelper::ConvertToViewPosition( pConversionMap, nBegin ); + rErrorPosInText = aConversionMap.ConvertToViewPosition( nBegin ); - sal_Int32 nStartOfSentence = ModelToViewHelper::ConvertToViewPosition( pConversionMap, pWrong->getSentenceStart( nBegin ) ); - sal_Int32 nEndOfSentence = ModelToViewHelper::ConvertToViewPosition( pConversionMap, pWrong->getSentenceEnd( nBegin ) ); + sal_Int32 nStartOfSentence = aConversionMap.ConvertToViewPosition( pWrong->getSentenceStart( nBegin ) ); + sal_Int32 nEndOfSentence = aConversionMap.ConvertToViewPosition( pWrong->getSentenceEnd( nBegin ) ); if( nEndOfSentence == STRING_LEN ) { nEndOfSentence = aExpandText.getLength(); @@ -1601,9 +1600,9 @@ bool SwSpellIter::SpellSentence(::svx::SpellPortions& rPortions, bool bIsGrammar pMySh->GoEndSentence(); if( bGrammarErrorFound ) { - rtl::OUString aExpandText; - const ModelToViewHelper::ConversionMap* pConversionMap = ((SwTxtNode*)pCrsr->GetNode())->BuildConversionMap( aExpandText ); - xub_StrLen nSentenceEnd = (xub_StrLen)ModelToViewHelper::ConvertToViewPosition( pConversionMap, aGrammarResult.nBehindEndOfSentencePosition ); + const ModelToViewHelper aConversionMap(*(SwTxtNode*)pCrsr->GetNode()); + rtl::OUString aExpandText = aConversionMap.getViewText(); + xub_StrLen nSentenceEnd = (xub_StrLen)aConversionMap.ConvertToViewPosition( aGrammarResult.nBehindEndOfSentencePosition ); // remove trailing space if( aExpandText[nSentenceEnd - 1] == ' ' ) --nSentenceEnd; diff --git a/sw/source/core/text/porlay.cxx b/sw/source/core/text/porlay.cxx index 9ab7bbe..c464d24 100644 --- a/sw/source/core/text/porlay.cxx +++ b/sw/source/core/text/porlay.cxx @@ -989,7 +989,7 @@ void SwScriptInfo::InitScriptInfo( const SwTxtNode& rNode, sal_Bool bRTL ) // we search for connecting opportunities (kashida) else if ( bAdjustBlock && i18n::ScriptType::COMPLEX == nScript ) { - SwScanner aScanner( rNode, rNode.GetTxt(), 0, 0, + SwScanner aScanner( rNode, rNode.GetTxt(), 0, ModelToViewHelper(), i18n::WordType::DICTIONARY_WORD, nLastKashida, nChg ); diff --git a/sw/source/core/txtnode/modeltoviewhelper.cxx b/sw/source/core/txtnode/modeltoviewhelper.cxx index 7f33324..861583d 100644 --- a/sw/source/core/txtnode/modeltoviewhelper.cxx +++ b/sw/source/core/txtnode/modeltoviewhelper.cxx @@ -19,21 +19,15 @@ #include <modeltoviewhelper.hxx> -namespace ModelToViewHelper -{ - /** Converts a model position into a view position */ -sal_uInt32 ConvertToViewPosition( const ConversionMap* pMap, sal_uInt32 nModelPos ) +sal_uInt32 ModelToViewHelper::ConvertToViewPosition( sal_uInt32 nModelPos ) const { sal_uInt32 nRet = nModelPos; - if ( !pMap ) - return nRet; - // Search for entry after nPos: ConversionMap::const_iterator aIter; - for ( aIter = pMap->begin(); aIter != pMap->end(); ++aIter ) + for ( aIter = m_aMap.begin(); aIter != m_aMap.end(); ++aIter ) { if ( (*aIter).first >= nModelPos ) { @@ -52,17 +46,14 @@ sal_uInt32 ConvertToViewPosition( const ConversionMap* pMap, sal_uInt32 nModelPo /** Converts a view position into a model position */ -ModelPosition ConvertToModelPosition( const ConversionMap* pMap, sal_uInt32 nViewPos ) +ModelToViewHelper::ModelPosition ModelToViewHelper::ConvertToModelPosition( sal_uInt32 nViewPos ) const { ModelPosition aRet; aRet.mnPos = nViewPos; - if ( !pMap ) - return aRet; - // Search for entry after nPos: ConversionMap::const_iterator aIter; - for ( aIter = pMap->begin(); aIter != pMap->end(); ++aIter ) + for ( aIter = m_aMap.begin(); aIter != m_aMap.end(); ++aIter ) { if ( (*aIter).second > nViewPos ) { @@ -70,7 +61,7 @@ ModelPosition ConvertToModelPosition( const ConversionMap* pMap, sal_uInt32 nVie const sal_uInt32 nPosExpand = (*aIter).second; // If nViewPos is in front of first field, we are finished. - if ( aIter == pMap->begin() ) + if ( aIter == m_aMap.begin() ) break; --aIter; @@ -107,6 +98,4 @@ ModelPosition ConvertToModelPosition( const ConversionMap* pMap, sal_uInt32 nVie return aRet; } -} // namespace ModelToViewStringConverter end - /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sw/source/core/txtnode/ndtxt.cxx b/sw/source/core/txtnode/ndtxt.cxx index b966480..3a26191 100644 --- a/sw/source/core/txtnode/ndtxt.cxx +++ b/sw/source/core/txtnode/ndtxt.cxx @@ -3092,14 +3092,12 @@ sal_Bool SwTxtNode::GetExpandTxt( SwTxtNode& rDestNd, const SwIndex* pDestIdx, return sal_True; } -const ModelToViewHelper::ConversionMap* - SwTxtNode::BuildConversionMap( rtl::OUString& rRetText ) const +ModelToViewHelper::ModelToViewHelper(const SwTxtNode &rNode) { - const rtl::OUString& rNodeText = GetTxt(); - rRetText = rNodeText; - ModelToViewHelper::ConversionMap* pConversionMap = 0; + const rtl::OUString& rNodeText = rNode.GetTxt(); + m_aRetText = rNodeText; - const SwpHints* pSwpHints2 = GetpSwpHints(); + const SwpHints* pSwpHints2 = rNode.GetpSwpHints(); xub_StrLen nPos = 0; for ( sal_uInt16 i = 0; pSwpHints2 && i < pSwpHints2->Count(); ++i ) @@ -3121,7 +3119,7 @@ const ModelToViewHelper::ConversionMap* { bReplace = true; const SwFmtFtn& rFtn = static_cast<SwTxtFtn const*>(pAttr)->GetFtn(); - const SwDoc *pDoc = GetDoc(); + const SwDoc *pDoc = rNode.GetDoc(); aExpand = rFtn.GetViewNumStr(*pDoc); nFieldPos = *pAttr->GetStart(); } @@ -3137,22 +3135,14 @@ const ModelToViewHelper::ConversionMap* if (bReplace) { - rRetText = rRetText.replaceAt( nPos + nFieldPos, 1, aExpand ); - if ( !pConversionMap ) - pConversionMap = new ModelToViewHelper::ConversionMap; - pConversionMap->push_back( - ModelToViewHelper::ConversionMapEntry( - nFieldPos, nPos + nFieldPos ) ); + m_aRetText = m_aRetText.replaceAt( nPos + nFieldPos, 1, aExpand ); + m_aMap.push_back( ConversionMapEntry( nFieldPos, nPos + nFieldPos ) ); nPos += ( aExpand.getLength() - 1 ); } } - if ( pConversionMap && pConversionMap->size() ) - pConversionMap->push_back( - ModelToViewHelper::ConversionMapEntry( - rNodeText.getLength()+1, rRetText.getLength()+1 ) ); - - return pConversionMap; + if ( !m_aMap.empty() ) + m_aMap.push_back( ConversionMapEntry( rNodeText.getLength()+1, m_aRetText.getLength()+1 ) ); } XubString SwTxtNode::GetRedlineTxt( xub_StrLen nIdx, xub_StrLen nLen, diff --git a/sw/source/core/txtnode/txtedt.cxx b/sw/source/core/txtnode/txtedt.cxx index 9f18fc7..0e4e447 100644 --- a/sw/source/core/txtnode/txtedt.cxx +++ b/sw/source/core/txtnode/txtedt.cxx @@ -660,9 +660,9 @@ XubString SwTxtNode::GetCurWord( xub_StrLen nPos ) const } SwScanner::SwScanner( const SwTxtNode& rNd, const rtl::OUString& rTxt, - const LanguageType* pLang, const ModelToViewHelper::ConversionMap* pConvMap, + const LanguageType* pLang, const ModelToViewHelper& rConvMap, sal_uInt16 nType, sal_Int32 nStart, sal_Int32 nEnde, sal_Bool bClp ) - : rNode( rNd ), aText( rTxt), pLanguage( pLang ), pConversionMap( pConvMap ), nLen( 0 ), nWordType( nType ), bClip( bClp ) + : rNode( rNd ), aText( rTxt), pLanguage( pLang ), rConversionMap( rConvMap ), nLen( 0 ), nWordType( nType ), bClip( bClp ) { OSL_ENSURE( !aText.isEmpty(), "SwScanner: EmptyString" ); nStartPos = nBegin = nStart; @@ -674,7 +674,7 @@ SwScanner::SwScanner( const SwTxtNode& rNd, const rtl::OUString& rTxt, } else { - ModelToViewHelper::ModelPosition aModelBeginPos = ModelToViewHelper::ConvertToModelPosition( pConversionMap, nBegin ); + ModelToViewHelper::ModelPosition aModelBeginPos = rConversionMap.ConvertToModelPosition( nBegin ); const sal_Int32 nModelBeginPos = aModelBeginPos.mnPos; aCurrLang = rNd.GetLang( nModelBeginPos ); } @@ -736,7 +736,7 @@ sal_Bool SwScanner::NextWord() if ( !pLanguage ) { const sal_uInt16 nNextScriptType = pBreakIt->GetBreakIter()->getScriptType( aText, nBegin ); - ModelToViewHelper::ModelPosition aModelBeginPos = ModelToViewHelper::ConvertToModelPosition( pConversionMap, nBegin ); + ModelToViewHelper::ModelPosition aModelBeginPos = rConversionMap.ConvertToModelPosition( nBegin ); const sal_Int32 nBeginModelPos = aModelBeginPos.mnPos; aCurrLang = rNode.GetLang( nBeginModelPos, 1, nNextScriptType ); } @@ -915,7 +915,7 @@ sal_uInt16 SwTxtNode::Spell(SwSpellArgs* pArgs) // In case 2. we pass the wrong list to the scanned, because only // the words in the wrong list have to be checked - SwScanner aScanner( *this, m_Text, 0, 0, + SwScanner aScanner( *this, m_Text, 0, ModelToViewHelper(), WordType::DICTIONARY_WORD, nBegin, nEnd ); while( !pArgs->xSpellAlt.is() && aScanner.NextWord() ) @@ -1223,7 +1223,7 @@ SwRect SwTxtFrm::_AutoSpell( const SwCntntNode* pActNode, const SwViewOption& rV uno::Reference< XSpellChecker1 > xSpell( ::GetSpellChecker() ); SwDoc* pDoc = pNode->GetDoc(); - SwScanner aScanner( *pNode, pNode->GetTxt(), 0, 0, + SwScanner aScanner( *pNode, pNode->GetTxt(), 0, ModelToViewHelper(), WordType::DICTIONARY_WORD, nBegin, nEnd); while( aScanner.NextWord() ) @@ -1373,13 +1373,12 @@ SwRect SwTxtFrm::SmartTagScan( SwCntntNode* /*pActNode*/, xub_StrLen /*nActPos*/ if ( nBegin < nEnd ) { // Expand the string: - rtl::OUString aExpandText; - const ModelToViewHelper::ConversionMap* pConversionMap = - pNode->BuildConversionMap( aExpandText ); + const ModelToViewHelper aConversionMap(*pNode); + rtl::OUString aExpandText = aConversionMap.getViewText(); // Ownership ov ConversionMap is passed to SwXTextMarkup object! Reference< com::sun::star::text::XTextMarkup > xTextMarkup = - new SwXTextMarkup( *pNode, pConversionMap ); + new SwXTextMarkup( *pNode, aConversionMap ); Reference< ::com::sun::star::frame::XController > xController = pNode->GetDoc()->GetDocShell()->GetController(); @@ -1395,8 +1394,8 @@ SwRect SwTxtFrm::SmartTagScan( SwCntntNode* /*pActNode*/, xub_StrLen /*nActPos*/ const com::sun::star::lang::Locale aLocale = pBreakIt->GetLocale( nLang ); nLangEnd = Min( nEnd, aIter.GetChgPos() ); - const sal_uInt32 nExpandBegin = ModelToViewHelper::ConvertToViewPosition( pConversionMap, nLangBegin ); - const sal_uInt32 nExpandEnd = ModelToViewHelper::ConvertToViewPosition( pConversionMap, nLangEnd ); + const sal_uInt32 nExpandBegin = aConversionMap.ConvertToViewPosition( nLangBegin ); + const sal_uInt32 nExpandEnd = aConversionMap.ConvertToViewPosition( nLangEnd ); rSmartTagMgr.Recognize( aExpandText, xTextMarkup, xController, aLocale, nExpandBegin, nExpandEnd - nExpandBegin ); @@ -1458,7 +1457,7 @@ void SwTxtFrm::CollectAutoCmplWrds( SwCntntNode* pActNode, xub_StrLen nActPos ) if( nBegin < nEnd ) { sal_uInt16 nCnt = 200; - SwScanner aScanner( *pNode, pNode->GetTxt(), 0, 0, + SwScanner aScanner( *pNode, pNode->GetTxt(), 0, ModelToViewHelper(), WordType::DICTIONARY_WORD, nBegin, nEnd ); while( aScanner.NextWord() ) { @@ -1861,13 +1860,13 @@ void SwTxtNode::CountWords( SwDocStat& rStat, return; } - // expand text into pConversionMap for scanner - rtl::OUString aExpandText; - const ModelToViewHelper::ConversionMap* pConversionMap = BuildConversionMap( aExpandText ); + // expand text into aConversionMap for scanner + const ModelToViewHelper aConversionMap(*this); + rtl::OUString aExpandText = aConversionMap.getViewText(); // map start and end points onto the ConversionMap - const sal_uInt32 nExpandBegin = ModelToViewHelper::ConvertToViewPosition( pConversionMap, nStt ); - const sal_uInt32 nExpandEnd = ModelToViewHelper::ConvertToViewPosition( pConversionMap, nEnd ); + const sal_uInt32 nExpandBegin = aConversionMap.ConvertToViewPosition( nStt ); + const sal_uInt32 nExpandEnd = aConversionMap.ConvertToViewPosition( nEnd ); if ( aExpandText.isEmpty() ) { @@ -1894,7 +1893,7 @@ void SwTxtNode::CountWords( SwDocStat& rStat, if( pBreakIt->GetBreakIter().is() ) { // zero is NULL for pLanguage -----------v last param = true for clipping - SwScanner aScanner( *this, aExpandText, 0, pConversionMap, i18n::WordType::WORD_COUNT, + SwScanner aScanner( *this, aExpandText, 0, aConversionMap, i18n::WordType::WORD_COUNT, nExpandBegin, nExpandEnd, true ); // used to filter out scanner returning almost empty strings (len=1; unichar=0x0001) @@ -1931,7 +1930,7 @@ void SwTxtNode::CountWords( SwDocStat& rStat, { LanguageType aLanguage = GetLang( 0 ); - SwScanner aScanner( *this, aNumString, &aLanguage, 0, + SwScanner aScanner( *this, aNumString, &aLanguage, ModelToViewHelper(), i18n::WordType::WORD_COUNT, 0, nNumStringLen, true ); while ( aScanner.NextWord() ) @@ -1953,8 +1952,6 @@ void SwTxtNode::CountWords( SwDocStat& rStat, } } - delete pConversionMap; - // If counting the whole para then update cached values and mark clean if ( isCountAll ) { diff --git a/sw/source/core/unocore/unoflatpara.cxx b/sw/source/core/unocore/unoflatpara.cxx index c590560..1652f9c 100644 --- a/sw/source/core/unocore/unoflatpara.cxx +++ b/sw/source/core/unocore/unoflatpara.cxx @@ -59,8 +59,8 @@ using namespace ::com::sun::star; * SwXFlatParagraph ******************************************************************************/ -SwXFlatParagraph::SwXFlatParagraph( SwTxtNode& rTxtNode, rtl::OUString aExpandText, const ModelToViewHelper::ConversionMap* pMap ) : - SwXTextMarkup( rTxtNode, pMap ), +SwXFlatParagraph::SwXFlatParagraph( SwTxtNode& rTxtNode, rtl::OUString aExpandText, const ModelToViewHelper& rMap ) : + SwXTextMarkup( rTxtNode, rMap ), maExpandText( aExpandText ) { } @@ -416,11 +416,10 @@ uno::Reference< text::XFlatParagraph > SwXFlatParagraphIterator::getNextPara() if ( pRet ) { // Expand the string: - rtl::OUString aExpandText; - const ModelToViewHelper::ConversionMap* pConversionMap = - pRet->BuildConversionMap( aExpandText ); + const ModelToViewHelper aConversionMap(*pRet); + rtl::OUString aExpandText = aConversionMap.getViewText(); - xRet = new SwXFlatParagraph( *pRet, aExpandText, pConversionMap ); + xRet = new SwXFlatParagraph( *pRet, aExpandText, aConversionMap ); // keep hard references... m_aFlatParaList.insert( xRet ); } @@ -469,11 +468,10 @@ uno::Reference< text::XFlatParagraph > SwXFlatParagraphIterator::getParaAfter(co if ( pNextTxtNode ) { // Expand the string: - rtl::OUString aExpandText; - const ModelToViewHelper::ConversionMap* pConversionMap = - pNextTxtNode->BuildConversionMap( aExpandText ); + const ModelToViewHelper aConversionMap(*pNextTxtNode); + rtl::OUString aExpandText = aConversionMap.getViewText(); - xRet = new SwXFlatParagraph( *pNextTxtNode, aExpandText, pConversionMap ); + xRet = new SwXFlatParagraph( *pNextTxtNode, aExpandText, aConversionMap ); // keep hard references... m_aFlatParaList.insert( xRet ); } @@ -516,11 +514,10 @@ uno::Reference< text::XFlatParagraph > SwXFlatParagraphIterator::getParaBefore(c if ( pPrevTxtNode ) { // Expand the string: - rtl::OUString aExpandText; - const ModelToViewHelper::ConversionMap* pConversionMap = - pPrevTxtNode->BuildConversionMap( aExpandText ); + const ModelToViewHelper aConversionMap(*pPrevTxtNode); + rtl::OUString aExpandText = aConversionMap.getViewText(); - xRet = new SwXFlatParagraph( *pPrevTxtNode, aExpandText, pConversionMap ); + xRet = new SwXFlatParagraph( *pPrevTxtNode, aExpandText, aConversionMap ); // keep hard references... m_aFlatParaList.insert( xRet ); } diff --git a/sw/source/core/unocore/unotextmarkup.cxx b/sw/source/core/unocore/unotextmarkup.cxx index 80d410e..a7cddad 100644 --- a/sw/source/core/unocore/unotextmarkup.cxx +++ b/sw/source/core/unocore/unotextmarkup.cxx @@ -44,8 +44,8 @@ using namespace ::com::sun::star; /* * SwXTextMarkup */ -SwXTextMarkup::SwXTextMarkup( SwTxtNode& rTxtNode, const ModelToViewHelper::ConversionMap* pMap ) - : mpTxtNode( &rTxtNode ), mpConversionMap( pMap ) +SwXTextMarkup::SwXTextMarkup( SwTxtNode& rTxtNode, const ModelToViewHelper& rMap ) + : mpTxtNode( &rTxtNode ), maConversionMap( rMap ) { // FME 2007-07-16 #i79641# SwXTextMarkup is allowed to be removed ... SetIsAllowedToBeRemovedInModifyCall(true); @@ -54,7 +54,6 @@ SwXTextMarkup::SwXTextMarkup( SwTxtNode& rTxtNode, const ModelToViewHelper::Conv SwXTextMarkup::~SwXTextMarkup() { - delete mpConversionMap; } uno::Reference< container::XStringKeyMap > SAL_CALL SwXTextMarkup::getMarkupInfoContainer() throw (uno::RuntimeException) @@ -133,9 +132,9 @@ void SAL_CALL SwXTextMarkup::commitTextMarkup( const ModelToViewHelper::ModelPosition aStartPos = - ModelToViewHelper::ConvertToModelPosition( mpConversionMap, nStart ); + maConversionMap.ConvertToModelPosition( nStart ); const ModelToViewHelper::ModelPosition aEndPos = - ModelToViewHelper::ConvertToModelPosition( mpConversionMap, nStart + nLength - 1); + maConversionMap.ConvertToModelPosition( nStart + nLength - 1); const bool bStartInField = aStartPos.mbIsField; const bool bEndInField = aEndPos.mbIsField; @@ -181,8 +180,8 @@ void SAL_CALL SwXTextMarkup::commitTextMarkup( pSubList = new SwGrammarMarkUp(); pWList->InsertSubList( nFieldPosModel, 1, nInsertPos, pSubList ); } - const sal_uInt32 nTmpStart = ModelToViewHelper::ConvertToViewPosition( mpConversionMap, aStartPos.mnPos ); - const sal_uInt32 nTmpLen = ModelToViewHelper::ConvertToViewPosition( mpConversionMap, aStartPos.mnPos + 1 ) + const sal_uInt32 nTmpStart = maConversionMap.ConvertToViewPosition( aStartPos.mnPos ); + const sal_uInt32 nTmpLen = maConversionMap.ConvertToViewPosition( aStartPos.mnPos + 1 ) - nTmpStart - aStartPos.mnSubPos; if( nTmpLen > 0 ) { @@ -233,7 +232,7 @@ void SAL_CALL SwXTextMarkup::commitTextMarkup( void lcl_commitGrammarMarkUp( - const ModelToViewHelper::ConversionMap* pConversionMap, + const ModelToViewHelper& rConversionMap, SwGrammarMarkUp* pWList, ::sal_Int32 nType, const ::rtl::OUString & rIdentifier, @@ -243,9 +242,9 @@ void lcl_commitGrammarMarkUp( { OSL_ENSURE( nType == text::TextMarkupType::PROOFREADING || nType == text::TextMarkupType::SENTENCE, "Wrong mark-up type" ); const ModelToViewHelper::ModelPosition aStartPos = - ModelToViewHelper::ConvertToModelPosition( pConversionMap, nStart ); + rConversionMap.ConvertToModelPosition( nStart ); const ModelToViewHelper::ModelPosition aEndPos = - ModelToViewHelper::ConvertToModelPosition( pConversionMap, nStart + nLength - 1); + rConversionMap.ConvertToModelPosition( nStart + nLength - 1); const bool bStartInField = aStartPos.mbIsField; const bool bEndInField = aEndPos.mbIsField; @@ -288,8 +287,8 @@ void lcl_commitGrammarMarkUp( pSubList = new SwGrammarMarkUp(); pWList->InsertSubList( nFieldPosModel, 1, nInsertPos, pSubList ); } - const sal_uInt32 nTmpStart = ModelToViewHelper::ConvertToViewPosition( pConversionMap, aStartPos.mnPos ); - const sal_uInt32 nTmpLen = ModelToViewHelper::ConvertToViewPosition( pConversionMap, aStartPos.mnPos + 1 ) + const sal_uInt32 nTmpStart = rConversionMap.ConvertToViewPosition( aStartPos.mnPos ); + const sal_uInt32 nTmpLen = rConversionMap.ConvertToViewPosition( aStartPos.mnPos + 1 ) - nTmpStart - aStartPos.mnSubPos; if( nTmpLen > 0 ) pSubList->Insert( rIdentifier, xMarkupInfoContainer, @@ -391,7 +390,7 @@ throw (lang::IllegalArgumentException, uno::RuntimeException) if( pWList->GetBeginInv() < STRING_LEN ) { const ModelToViewHelper::ModelPosition aSentenceEnd = - ModelToViewHelper::ConvertToModelPosition( mpConversionMap, + maConversionMap.ConvertToModelPosition( pMarkups[nSentenceMarkUpIndex].nOffset + pMarkups[nSentenceMarkUpIndex].nLength ); bAcceptGrammarError = (xub_StrLen)aSentenceEnd.mnPos > pWList->GetBeginInv(); pWList->ClearGrammarList( (xub_StrLen)aSentenceEnd.mnPos ); @@ -402,7 +401,7 @@ throw (lang::IllegalArgumentException, uno::RuntimeException) for( i = 0; i < nLen; ++i ) { const text::TextMarkupDescriptor &rDesc = pMarkups[i]; - lcl_commitGrammarMarkUp( mpConversionMap, pWList, rDesc.nType, + lcl_commitGrammarMarkUp( maConversionMap, pWList, rDesc.nType, rDesc.aIdentifier, rDesc.nOffset, rDesc.nLength, rDesc.xMarkupInfoContainer ); } } @@ -411,7 +410,7 @@ throw (lang::IllegalArgumentException, uno::RuntimeException) bRepaint = false; i = nSentenceMarkUpIndex; const text::TextMarkupDescriptor &rDesc = pMarkups[i]; - lcl_commitGrammarMarkUp( mpConversionMap, pWList, rDesc.nType, + lcl_commitGrammarMarkUp( maConversionMap, pWList, rDesc.nType, rDesc.aIdentifier, rDesc.nOffset, rDesc.nLength, rDesc.xMarkupInfoContainer ); }
_______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits