sc/inc/cellformtmpl.hxx | 2 sc/inc/cellvalue.hxx | 11 - sc/inc/chgtrack.hxx | 28 ++-- sc/inc/dbdata.hxx | 2 sc/inc/editutil.hxx | 18 +- sc/inc/filter.hxx | 12 - sc/inc/global.hxx | 4 sc/inc/rangecache.hxx | 4 sc/inc/spellcheckcontext.hxx | 4 sc/qa/unit/subsequent_filters_test4.cxx | 23 ++- sc/qa/unit/ucalc.cxx | 4 sc/source/core/data/cellvalue.cxx | 16 +- sc/source/core/data/column.cxx | 2 sc/source/core/data/column2.cxx | 52 +++---- sc/source/core/data/column3.cxx | 14 +- sc/source/core/data/conditio.cxx | 2 sc/source/core/data/dociter.cxx | 4 sc/source/core/data/documen2.cxx | 2 sc/source/core/data/document.cxx | 2 sc/source/core/data/global.cxx | 14 -- sc/source/core/data/queryiter.cxx | 2 sc/source/core/data/table4.cxx | 12 - sc/source/core/data/validat.cxx | 2 sc/source/core/tool/cellform.cxx | 4 sc/source/core/tool/chgtrack.cxx | 115 ++++++++--------- sc/source/core/tool/dbdata.cxx | 10 - sc/source/core/tool/editutil.cxx | 59 +++----- sc/source/core/tool/interpr3.cxx | 4 sc/source/core/tool/interpr4.cxx | 12 - sc/source/core/tool/interpr5.cxx | 2 sc/source/core/tool/rangecache.cxx | 22 +-- sc/source/core/tool/rangeseq.cxx | 2 sc/source/filter/dif/difexp.cxx | 22 +-- sc/source/filter/excel/excel.cxx | 2 sc/source/filter/html/htmlimp.cxx | 42 +++--- sc/source/filter/html/htmlpars.cxx | 51 +++---- sc/source/filter/inc/eeimport.hxx | 4 sc/source/filter/inc/ftools.hxx | 12 - sc/source/filter/inc/htmlimp.hxx | 2 sc/source/filter/inc/htmlpars.hxx | 12 - sc/source/filter/inc/rtfimp.hxx | 2 sc/source/filter/oox/worksheethelper.cxx | 2 sc/source/filter/rtf/eeimpars.cxx | 76 +++++------ sc/source/filter/rtf/rtfimp.cxx | 12 - sc/source/filter/xcl97/XclExpChangeTrack.cxx | 4 sc/source/filter/xml/XMLChangeTrackingExportHelper.cxx | 8 - sc/source/filter/xml/XMLChangeTrackingImportHelper.cxx | 10 - sc/source/filter/xml/xmlexprt.cxx | 10 - sc/source/ui/app/transobj.cxx | 2 sc/source/ui/docshell/docsh.cxx | 6 sc/source/ui/docshell/docsh3.cxx | 8 - sc/source/ui/docshell/externalrefmgr.cxx | 4 sc/source/ui/docshell/impex.cxx | 6 sc/source/ui/miscdlgs/acredlin.cxx | 4 sc/source/ui/miscdlgs/duplicaterecordsdlg.cxx | 4 sc/source/ui/undo/undoblk.cxx | 8 - sc/source/ui/undo/undoblk3.cxx | 6 sc/source/ui/unoobj/cellsuno.cxx | 2 sc/source/ui/view/cellsh1.cxx | 2 sc/source/ui/view/output2.cxx | 6 sc/source/ui/view/spellcheckcontext.cxx | 17 +- sc/source/ui/view/tabview.cxx | 2 sc/source/ui/view/viewdata.cxx | 8 - sc/source/ui/view/viewfun2.cxx | 2 sc/source/ui/view/viewfun4.cxx | 2 sc/source/ui/view/viewfunc.cxx | 2 66 files changed, 397 insertions(+), 431 deletions(-)
New commits: commit ae5220b761f131126641e11ab691d39d22e1bc74 Author: Xisco Fauli <xiscofa...@libreoffice.org> AuthorDate: Thu May 15 13:47:45 2025 +0200 Commit: Xisco Fauli <xiscofa...@libreoffice.org> CommitDate: Fri May 16 21:57:28 2025 +0200 ScEditUtil::GetString: pass ScDocument by ref allowing to drop ScGlobal::GetStaticFieldEditEngine(); It was added in commit 1ecdc7aaf661e97a33cf521f553481d79cd26de2 Author: Eike Rathke <er...@redhat.com> Date: Thu Jul 25 15:33:49 2013 +0200 resolved fdo#67249 use ScFieldEditEngine to resolve field content Also adapt the testRichTextContentODS unittest Change-Id: I06eb1b2b4fcc35867531c645098d854dd9907bc7 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/185406 Tested-by: Jenkins Reviewed-by: Xisco Fauli <xiscofa...@libreoffice.org> diff --git a/sc/inc/cellformtmpl.hxx b/sc/inc/cellformtmpl.hxx index a36ba17a8bbb..7526f29c321c 100644 --- a/sc/inc/cellformtmpl.hxx +++ b/sc/inc/cellformtmpl.hxx @@ -41,7 +41,7 @@ auto ScCellFormat::visitInputSharedString(const ScRefCellValue& rCell, sal_uInt3 { case CELLTYPE_STRING: case CELLTYPE_EDIT: - return rOper(rCell.getSharedString(&rDoc, rStrPool)); + return rOper(rCell.getSharedString(rDoc, rStrPool)); case CELLTYPE_VALUE: return rOper(rStrPool.intern(rContext.NFGetInputLineString( rCell.getDouble(), nFormat, bFiltering, bForceSystemLocale))); diff --git a/sc/inc/cellvalue.hxx b/sc/inc/cellvalue.hxx index bfbe228a8575..b618efa31a4d 100644 --- a/sc/inc/cellvalue.hxx +++ b/sc/inc/cellvalue.hxx @@ -169,15 +169,12 @@ public: * * Note that this method is NOT thread-safe. * - * @param pDoc + * @param rDoc * Needed to resolve EditCells' field contents, obtain a - * ScFieldEditEngine from that document. May be NULL if there is - * no ScDocument in the calling context but then the document - * specific fields can not be resolved. See - * ScEditUtil::GetString(). + * ScFieldEditEngine from that document. */ - SC_DLLPUBLIC OUString getString( const ScDocument* pDoc ) const; - SC_DLLPUBLIC svl::SharedString getSharedString( const ScDocument* pDoc, svl::SharedStringPool& rStrPool ) const; + SC_DLLPUBLIC OUString getString( const ScDocument& rDoc ) const; + SC_DLLPUBLIC svl::SharedString getSharedString( const ScDocument& rDoc, svl::SharedStringPool& rStrPool ) const; /** * Retrieve a string value without modifying the states of any objects in diff --git a/sc/inc/chgtrack.hxx b/sc/inc/chgtrack.hxx index 5b781f98d64c..259d79b786e1 100644 --- a/sc/inc/chgtrack.hxx +++ b/sc/inc/chgtrack.hxx @@ -631,10 +631,10 @@ class SAL_DLLPUBLIC_RTTI ScChangeActionContent final : public ScChangeAction void ClearTrack(); static OUString GetStringOfCell( - const ScCellValue& rCell, const ScDocument* pDoc, const ScAddress& rPos ); + const ScCellValue& rCell, const ScDocument& rDoc, const ScAddress& rPos ); static OUString GetStringOfCell( - const ScCellValue& rCell, const ScDocument* pDoc, sal_uLong nFormat ); + const ScCellValue& rCell, const ScDocument& rDoc, sal_uLong nFormat ); static void SetValue( OUString& rStr, ScCellValue& rCell, const ScAddress& rPos, const ScCellValue& rOrgCell, const ScDocument* pFromDoc, @@ -644,14 +644,14 @@ class SAL_DLLPUBLIC_RTTI ScChangeActionContent final : public ScChangeAction const ScCellValue& rOrgCell, const ScDocument* pFromDoc, ScDocument* pToDoc ); - static void SetCell( OUString& rStr, const ScCellValue& rCell, sal_uLong nFormat, const ScDocument* pDoc ); + static void SetCell( OUString& rStr, const ScCellValue& rCell, sal_uLong nFormat, const ScDocument& rDoc ); static bool NeedsNumberFormat( const ScCellValue& rVal ); void SetValueString( OUString& rValue, ScCellValue& rCell, const OUString& rStr, ScDocument* pDoc ); OUString GetValueString( const OUString& rValue, const ScCellValue& rCell, - const ScDocument* pDoc ) const; + const ScDocument& rDoc ) const; OUString GetFormulaString( const ScFormulaCell* pCell ) const; @@ -685,11 +685,11 @@ public: const sal_uLong nRejectingNumber, const ScBigRange& aBigRange, const OUString& aUser, const DateTime& aDateTime, const OUString &sComment, ScCellValue aOldCell, - const ScDocument* pDoc, const OUString& sOldValue ); // to use for XML Import + const ScDocument& rDoc, const OUString& sOldValue ); // to use for XML Import ScChangeActionContent( const sal_uLong nActionNumber, ScCellValue aNewCell, - const ScBigRange& aBigRange, const ScDocument* pDoc, + const ScBigRange& aBigRange, const ScDocument& rDoc, const OUString& sNewValue ); // to use for XML Import of Generated Actions virtual ~ScChangeActionContent() override; @@ -716,12 +716,12 @@ public: // Used in import filter AppendContentOnTheFly, void SetOldNewCells( const ScCellValue& rOldCell, sal_uLong nOldFormat, - const ScCellValue& rNewCell, sal_uLong nNewFormat, const ScDocument* pDoc ); + const ScCellValue& rNewCell, sal_uLong nNewFormat, const ScDocument& rDoc ); // Use this only in the XML import, // takes ownership of cell. void SetNewCell( - const ScCellValue& rCell, const ScDocument* pDoc, const OUString& rFormatted ); + const ScCellValue& rCell, const ScDocument& rDoc, const OUString& rFormatted ); // These functions should be protected but for // the XML import they are public. @@ -734,8 +734,8 @@ public: // assigns string / creates formula cell void SetOldValue( const OUString& rOld, ScDocument* pDoc ); - OUString GetOldString( const ScDocument* pDoc ) const; - OUString GetNewString( const ScDocument* pDoc ) const; + OUString GetOldString( const ScDocument& rDoc ) const; + OUString GetNewString( const ScDocument& rDoc ) const; const ScCellValue& GetOldCell() const { return maOldCell;} const ScCellValue& GetNewCell() const { return maNewCell;} virtual OUString GetDescription( @@ -886,7 +886,7 @@ class SAL_DLLPUBLIC_RTTI ScChangeTrack final : public utl::ConfigurationListener void SetLastMerge( sal_uLong nVal ) { nLastMerge = nVal; } sal_uLong GetLastMerge() const { return nLastMerge; } - void SetLastCutMoveRange( const ScRange&, ScDocument* ); + void SetLastCutMoveRange( const ScRange&, ScDocument& ); // create block of ModifyMsg void StartBlockModify( ScChangeTrackMsgType, @@ -1000,11 +1000,11 @@ public: // after new value was set in the document, // old value from RefDoc/UndoDoc void AppendContent( const ScAddress& rPos, - const ScDocument* pRefDoc ); + const ScDocument& rRefDoc ); // after new values were set in the document, // old values from RefDoc/UndoDoc void AppendContentRange( const ScRange& rRange, - ScDocument* pRefDoc, + ScDocument& rRefDoc, sal_uLong& nStartAction, sal_uLong& nEndAction, ScChangeActionClipMode eMode = SC_CACM_NONE ); // after new value was set in the document, @@ -1132,7 +1132,7 @@ public: bool IsTimeNanoSeconds() const { return bTimeNanoSeconds; } void AppendCloned( ScChangeAction* pAppend ); - SC_DLLPUBLIC ScChangeTrack* Clone( ScDocument* pDocument ) const; + SC_DLLPUBLIC ScChangeTrack* Clone( ScDocument& rDocument ) const; static void MergeActionState( ScChangeAction* pAct, const ScChangeAction* pOtherAct ); /// Get info about all ScChangeAction elements. void GetChangeTrackInfo(tools::JsonWriter&); diff --git a/sc/inc/dbdata.hxx b/sc/inc/dbdata.hxx index 11cc5465f91f..5a587c982b19 100644 --- a/sc/inc/dbdata.hxx +++ b/sc/inc/dbdata.hxx @@ -162,7 +162,7 @@ public: /** Refresh/update the column names with the header row's cell contents within the given range. */ - void RefreshTableColumnNames( ScDocument* pDoc, const ScRange& rRange ); + void RefreshTableColumnNames( ScDocument& rDoc, const ScRange& rRange ); /** Finds the column named rName and returns the corresponding offset within the table. diff --git a/sc/inc/editutil.hxx b/sc/inc/editutil.hxx index 7bd593d34a5a..368690019913 100644 --- a/sc/inc/editutil.hxx +++ b/sc/inc/editutil.hxx @@ -35,7 +35,7 @@ class ScEditEngineDefaulter; class ScEditUtil { - ScDocument* pDoc; + ScDocument& rDoc; SCCOL nCol; SCROW nRow; SCTAB nTab; @@ -54,17 +54,15 @@ public: static OUString GetSpaceDelimitedString( const EditEngine& rEngine ); /// Retrieves string with paragraphs delimited by new lines (' '). - static OUString GetMultilineString( const EditEngine& rEngine ); + SC_DLLPUBLIC static OUString GetMultilineString( const EditEngine& rEngine ); static OUString GetMultilineString( const EditTextObject& rEdit ); /** Retrieves string with paragraphs delimited by new lines (' '). - @param pDoc - If not NULL, use pDoc->GetEditEngine() to retrieve field content. - If NULL, a static mutex-guarded ScFieldEditEngine is used that - is not capable of resolving document specific fields; avoid. + @param rDoc + use rDoc.GetEditEngine() to retrieve field content. */ - SC_DLLPUBLIC static OUString GetString( const EditTextObject& rEditText, const ScDocument* pDoc ); + SC_DLLPUBLIC static OUString GetString( const EditTextObject& rEditText, const ScDocument& rDoc ); static std::unique_ptr<EditTextObject> CreateURLObjectFromURL( ScDocument& rDoc, const OUString& rURL, const OUString& rText ); @@ -77,7 +75,7 @@ public: const SvxFieldData& rFieldData, const ScDocument* pDoc, std::optional<Color>* ppTextColor, std::optional<FontLineStyle>* ppFldLineStyle ); public: - ScEditUtil( ScDocument* pDocument, SCCOL nX, SCROW nY, SCTAB nZ, + ScEditUtil( ScDocument& rDocument, SCCOL nX, SCROW nY, SCTAB nZ, const Point& rCellPos, OutputDevice* pDevice, double nScaleX, double nScaleY, const Fraction& rX, const Fraction& rY, bool bPrintTwips = false ); @@ -195,9 +193,9 @@ class SC_DLLPUBLIC ScTabEditEngine final : public ScFieldEditEngine private: void Init(const ScPatternAttr& rPattern); public: - ScTabEditEngine( ScDocument* pDoc ); // Default + ScTabEditEngine( ScDocument& rDoc ); // Default ScTabEditEngine(const ScPatternAttr& rPattern, - SfxItemPool *pEngineItemPool, ScDocument *pDoc, + SfxItemPool *pEngineItemPool, ScDocument& rDoc, SfxItemPool* pTextObjectPool = nullptr ); }; diff --git a/sc/inc/filter.hxx b/sc/inc/filter.hxx index 6bceb74b69d0..e6a4c85d1b66 100644 --- a/sc/inc/filter.hxx +++ b/sc/inc/filter.hxx @@ -66,20 +66,20 @@ class SAL_DLLPUBLIC_RTTI ScFormatFilterPlugin { // eFormat == EIF_BIFF_LE4 -> only non storage files _might_ be read successfully virtual ErrCode ScImportDif( SvStream&, ScDocument*, const ScAddress& rInsPos, const rtl_TextEncoding eSrc ) = 0; - virtual ErrCode ScImportRTF( SvStream&, const OUString& rBaseURL, ScDocument*, ScRange& rRange ) = 0; - virtual ErrCode ScImportHTML( SvStream&, const OUString& rBaseURL, ScDocument*, ScRange& rRange, double nOutputFactor, + virtual ErrCode ScImportRTF( SvStream&, const OUString& rBaseURL, ScDocument&, ScRange& rRange ) = 0; + virtual ErrCode ScImportHTML( SvStream&, const OUString& rBaseURL, ScDocument&, ScRange& rRange, double nOutputFactor, bool bCalcWidthHeight, SvNumberFormatter* pFormatter, bool bConvertDate, bool bConvertScientific ) = 0; // various import helpers - virtual std::unique_ptr<ScEEAbsImport> CreateRTFImport( ScDocument* pDoc, const ScRange& rRange ) = 0; - virtual std::unique_ptr<ScEEAbsImport> CreateHTMLImport( ScDocument* pDocP, const OUString& rBaseURL, const ScRange& rRange ) = 0; + virtual std::unique_ptr<ScEEAbsImport> CreateRTFImport( ScDocument& rDoc, const ScRange& rRange ) = 0; + virtual std::unique_ptr<ScEEAbsImport> CreateHTMLImport( ScDocument& rDoc, const OUString& rBaseURL, const ScRange& rRange ) = 0; virtual OUString GetHTMLRangeNameList( ScDocument& rDoc, const OUString& rOrigName ) = 0; // various export filters virtual ErrCode ScExportExcel5( SfxMedium&, ScDocument*, ExportFormatExcel eFormat, rtl_TextEncoding eDest ) = 0; - virtual void ScExportDif( SvStream&, ScDocument*, const ScAddress& rOutPos, const rtl_TextEncoding eDest ) = 0; - virtual void ScExportDif( SvStream&, ScDocument*, const ScRange& rRange, const rtl_TextEncoding eDest ) = 0; + virtual void ScExportDif( SvStream&, ScDocument&, const ScAddress& rOutPos, const rtl_TextEncoding eDest ) = 0; + virtual void ScExportDif( SvStream&, ScDocument&, const ScRange& rRange, const rtl_TextEncoding eDest ) = 0; virtual void ScExportHTML( SvStream&, const OUString& rBaseURL, ScDocument*, const ScRange& rRange, const rtl_TextEncoding eDest, bool bAll, const OUString& rStreamPath, OUString& rNonConvertibleChars, const OUString& rFilterOptions ) = 0; virtual void ScExportRTF( SvStream&, ScDocument*, const ScRange& rRange, const rtl_TextEncoding eDest ) = 0; diff --git a/sc/inc/global.hxx b/sc/inc/global.hxx index ca35a1c968e1..7a29f97eb7b6 100644 --- a/sc/inc/global.hxx +++ b/sc/inc/global.hxx @@ -698,10 +698,6 @@ public: /** Obtain the ordinal suffix for a number according to the system locale */ static OUString GetOrdinalSuffix( sal_Int32 nNumber); - /** A static instance of ScFieldEditEngine not capable of resolving - document specific fields, to be used only by ScEditUtil::GetString(). */ - static ScFieldEditEngine& GetStaticFieldEditEngine(); - static sc::SharedStringPoolPurge& GetSharedStringPoolPurge(); /** Replaces the first occurrence of rPlaceholder in rString with diff --git a/sc/inc/rangecache.hxx b/sc/inc/rangecache.hxx index 0e04d47c4ad9..c9920c22126d 100644 --- a/sc/inc/rangecache.hxx +++ b/sc/inc/rangecache.hxx @@ -44,7 +44,7 @@ class ScSortedRangeCache final : public SvtListener { public: /// MUST be new'd because Notify() deletes. - ScSortedRangeCache(ScDocument* pDoc, const ScRange& rRange, const ScQueryParam& param, + ScSortedRangeCache(ScDocument& rDoc, const ScRange& rRange, const ScQueryParam& param, ScInterpreterContext* context, bool invalid = false, bool bNewSearchFunction = false, sal_uInt8 nSortedBinarySearch = 0x00); @@ -117,7 +117,7 @@ private: std::vector<size_t> mRowToIndex; // indexed by 'SCROW - maRange.aStart.Row()' std::vector<size_t> mColToIndex; // indexed by 'SCCOL - maRange.aStart.Col()' ScRange maRange; - ScDocument* mpDoc; + ScDocument& mrDoc; bool mValid; bool mRowSearch; ValueType mValueType; diff --git a/sc/inc/spellcheckcontext.hxx b/sc/inc/spellcheckcontext.hxx index dc5f09449039..9d69c44c1e7b 100644 --- a/sc/inc/spellcheckcontext.hxx +++ b/sc/inc/spellcheckcontext.hxx @@ -55,14 +55,14 @@ class SpellCheckContext std::unique_ptr<SpellCheckCache> mpCache; std::unique_ptr<SpellCheckResult> mpResult; - ScDocument* pDoc; + ScDocument& rDoc; std::unique_ptr<ScTabEditEngine> mpEngine; std::unique_ptr<SpellCheckStatus> mpStatus; SCTAB mnTab; LanguageType meLanguage; public: - SpellCheckContext(ScDocument* pDocument, SCTAB nTab); + SpellCheckContext(ScDocument& rDocument, SCTAB nTab); ~SpellCheckContext(); void dispose(); diff --git a/sc/qa/unit/subsequent_filters_test4.cxx b/sc/qa/unit/subsequent_filters_test4.cxx index d8f11d5a3493..94b9bec45d2a 100644 --- a/sc/qa/unit/subsequent_filters_test4.cxx +++ b/sc/qa/unit/subsequent_filters_test4.cxx @@ -515,8 +515,11 @@ CPPUNIT_TEST_FIXTURE(ScFiltersTest4, testRichTextContentODS) CPPUNIT_ASSERT_MESSAGE("Unexpected text.", aParaText.startsWith("Sheet name is ")); CPPUNIT_ASSERT_MESSAGE("Sheet name field item not found.", pEditText->HasField(text::textfield::Type::TABLE)); - CPPUNIT_ASSERT_EQUAL(u"Sheet name is Test."_ustr, ScEditUtil::GetString(*pEditText, pDoc)); - CPPUNIT_ASSERT_EQUAL(u"Sheet name is ?."_ustr, ScEditUtil::GetString(*pEditText, nullptr)); + CPPUNIT_ASSERT_EQUAL(u"Sheet name is Test."_ustr, ScEditUtil::GetString(*pEditText, *pDoc)); + + ScFieldEditEngine* pEE = new ScFieldEditEngine(nullptr, nullptr); + pEE->SetText(*pEditText); + CPPUNIT_ASSERT_EQUAL(u"Sheet name is ?."_ustr, ScEditUtil::GetMultilineString(*pEE)); // Cell with URL field item. aPos.IncRow(); @@ -529,9 +532,9 @@ CPPUNIT_TEST_FIXTURE(ScFiltersTest4, testRichTextContentODS) CPPUNIT_ASSERT_MESSAGE("URL field item not found.", pEditText->HasField(text::textfield::Type::URL)); CPPUNIT_ASSERT_EQUAL(u"URL: http://libreoffice.org"_ustr, - ScEditUtil::GetString(*pEditText, pDoc)); - CPPUNIT_ASSERT_EQUAL(u"URL: http://libreoffice.org"_ustr, - ScEditUtil::GetString(*pEditText, nullptr)); + ScEditUtil::GetString(*pEditText, *pDoc)); + pEE->SetText(*pEditText); + CPPUNIT_ASSERT_EQUAL(u"URL: http://libreoffice.org"_ustr, ScEditUtil::GetMultilineString(*pEE)); // Cell with Date field item. aPos.IncRow(); @@ -544,9 +547,10 @@ CPPUNIT_TEST_FIXTURE(ScFiltersTest4, testRichTextContentODS) CPPUNIT_ASSERT_MESSAGE("Date field item not found.", pEditText->HasField(text::textfield::Type::DATE)); CPPUNIT_ASSERT_MESSAGE("Date field not resolved with pDoc->", - ScEditUtil::GetString(*pEditText, pDoc).indexOf("/20") > 0); + ScEditUtil::GetString(*pEditText, *pDoc).indexOf("/20") > 0); + pEE->SetText(*pEditText); CPPUNIT_ASSERT_MESSAGE("Date field not resolved with NULL.", - ScEditUtil::GetString(*pEditText, nullptr).indexOf("/20") > 0); + ScEditUtil::GetMultilineString(*pEE).indexOf("/20") > 0); // Cell with DocInfo title field item. aPos.IncRow(); @@ -558,8 +562,9 @@ CPPUNIT_TEST_FIXTURE(ScFiltersTest4, testRichTextContentODS) CPPUNIT_ASSERT_MESSAGE("Unexpected text.", aParaText.startsWith("Title: ")); CPPUNIT_ASSERT_MESSAGE("DocInfo title field item not found.", pEditText->HasField(text::textfield::Type::DOCINFO_TITLE)); - CPPUNIT_ASSERT_EQUAL(u"Title: Test Document"_ustr, ScEditUtil::GetString(*pEditText, pDoc)); - CPPUNIT_ASSERT_EQUAL(u"Title: ?"_ustr, ScEditUtil::GetString(*pEditText, nullptr)); + CPPUNIT_ASSERT_EQUAL(u"Title: Test Document"_ustr, ScEditUtil::GetString(*pEditText, *pDoc)); + pEE->SetText(*pEditText); + CPPUNIT_ASSERT_EQUAL(u"Title: ?"_ustr, ScEditUtil::GetMultilineString(*pEE)); // Cell with sentence with both bold and italic sequences. aPos.IncRow(); diff --git a/sc/qa/unit/ucalc.cxx b/sc/qa/unit/ucalc.cxx index 5d54396872b7..71025aabcaf8 100644 --- a/sc/qa/unit/ucalc.cxx +++ b/sc/qa/unit/ucalc.cxx @@ -1182,10 +1182,10 @@ bool Test::checkHorizontalIterator(ScDocument& rDoc, const std::vector<std::vect return false; } - if (OUString::createFromAscii(pChecks[i].pVal) != pCell->getString(&rDoc)) + if (OUString::createFromAscii(pChecks[i].pVal) != pCell->getString(rDoc)) { cerr << "String mismatch " << pChecks[i].pVal << " vs. " << - pCell->getString(&rDoc) << endl; + pCell->getString(rDoc) << endl; return false; } } diff --git a/sc/source/core/data/cellvalue.cxx b/sc/source/core/data/cellvalue.cxx index 0f972fc534e3..b637158f39da 100644 --- a/sc/source/core/data/cellvalue.cxx +++ b/sc/source/core/data/cellvalue.cxx @@ -187,7 +187,7 @@ bool hasNumericImpl( CellType eType, ScFormulaCell* pFormula ) } template <typename T> -OUString getStringImpl( const T& rCell, const ScDocument* pDoc ) +OUString getStringImpl( const T& rCell, const ScDocument& rDoc ) { switch (rCell.getType()) { @@ -197,7 +197,7 @@ OUString getStringImpl( const T& rCell, const ScDocument* pDoc ) return rCell.getSharedString()->getString(); case CELLTYPE_EDIT: if (rCell.getEditText()) - return ScEditUtil::GetString(*rCell.getEditText(), pDoc); + return ScEditUtil::GetString(*rCell.getEditText(), rDoc); break; case CELLTYPE_FORMULA: return rCell.getFormula()->GetString().getString(); @@ -218,7 +218,7 @@ OUString getRawStringImpl( const CellT& rCell, const ScDocument& rDoc ) return rCell.getSharedString()->getString(); case CELLTYPE_EDIT: if (rCell.getEditText()) - return ScEditUtil::GetString(*rCell.getEditText(), &rDoc); + return ScEditUtil::GetString(*rCell.getEditText(), rDoc); break; case CELLTYPE_FORMULA: return rCell.getFormula()->GetRawString().getString(); @@ -514,7 +514,7 @@ void ScCellValue::release( ScColumn& rColumn, SCROW nRow, sc::StartListeningType OUString ScCellValue::getString( const ScDocument& rDoc ) const { - return getStringImpl(*this, &rDoc); + return getStringImpl(*this, rDoc); } bool ScCellValue::isEmpty() const @@ -655,12 +655,12 @@ double ScRefCellValue::getRawValue() const return 0.0; } -OUString ScRefCellValue::getString( const ScDocument* pDoc ) const +OUString ScRefCellValue::getString( const ScDocument& rDoc ) const { - return getStringImpl(*this, pDoc); + return getStringImpl(*this, rDoc); } -svl::SharedString ScRefCellValue::getSharedString( const ScDocument* pDoc, svl::SharedStringPool& rStrPool ) const +svl::SharedString ScRefCellValue::getSharedString( const ScDocument& rDoc, svl::SharedStringPool& rStrPool ) const { switch (getType()) { @@ -670,7 +670,7 @@ svl::SharedString ScRefCellValue::getSharedString( const ScDocument* pDoc, svl:: return *getSharedString(); case CELLTYPE_EDIT: if (auto pEditText = getEditText()) - return rStrPool.intern(ScEditUtil::GetString(*pEditText, pDoc)); + return rStrPool.intern(ScEditUtil::GetString(*pEditText, rDoc)); break; case CELLTYPE_FORMULA: return getFormula()->GetString(); diff --git a/sc/source/core/data/column.cxx b/sc/source/core/data/column.cxx index 15060d98c1b3..5efe9da8a1af 100644 --- a/sc/source/core/data/column.cxx +++ b/sc/source/core/data/column.cxx @@ -957,7 +957,7 @@ void ScColumn::CopyStaticToDocument( for (; itData != itDataEnd; ++itData) { const EditTextObject& rObj = **itData; - svl::SharedString aSS = rDocument.GetSharedStringPool().intern(ScEditUtil::GetString(rObj, &rDocument)); + svl::SharedString aSS = rDocument.GetSharedStringPool().intern(ScEditUtil::GetString(rObj, rDocument)); aConverted.push_back(aSS); } aDestPos.miCellPos = rDestCol.maCells.set(aDestPos.miCellPos, nCurRow, aConverted.begin(), aConverted.end()); diff --git a/sc/source/core/data/column2.cxx b/sc/source/core/data/column2.cxx index b32e48b14e9d..b2aa37dd78e5 100644 --- a/sc/source/core/data/column2.cxx +++ b/sc/source/core/data/column2.cxx @@ -1179,14 +1179,14 @@ protected: }; std::vector<StrEntry> maStrEntries; - ScDocument* mpDoc; + ScDocument& mrDoc; - StrEntries(sc::CellStoreType& rCells, ScDocument* pDoc) : mrCells(rCells), mpDoc(pDoc) {} + StrEntries(sc::CellStoreType& rCells, ScDocument& rDoc) : mrCells(rCells), mrDoc(rDoc) {} public: void commitStrings() { - svl::SharedStringPool& rPool = mpDoc->GetSharedStringPool(); + svl::SharedStringPool& rPool = mrDoc.GetSharedStringPool(); sc::CellStoreType::iterator it = mrCells.begin(); for (const auto& rStrEntry : maStrEntries) it = mrCells.set(it, rStrEntry.mnRow, rPool.intern(rStrEntry.maStr)); @@ -1198,7 +1198,7 @@ class RemoveEditAttribsHandler : public StrEntries std::unique_ptr<ScFieldEditEngine> mpEngine; public: - RemoveEditAttribsHandler(sc::CellStoreType& rCells, ScDocument* pDoc) : StrEntries(rCells, pDoc) {} + RemoveEditAttribsHandler(sc::CellStoreType& rCells, ScDocument& rDoc) : StrEntries(rCells, rDoc) {} void operator() (size_t nRow, EditTextObject*& pObj) { @@ -1210,10 +1210,10 @@ public: // test for attributes if (!mpEngine) { - mpEngine.reset(new ScFieldEditEngine(mpDoc, mpDoc->GetEditPool())); + mpEngine.reset(new ScFieldEditEngine(&mrDoc, mrDoc.GetEditPool())); // EEControlBits::ONLINESPELLING if there are errors already mpEngine->SetControlWord(mpEngine->GetControlWord() | EEControlBits::ONLINESPELLING); - mpDoc->ApplyAsianEditSettings(*mpEngine); + mrDoc.ApplyAsianEditSettings(*mpEngine); } mpEngine->SetTextCurrentDefaults(*pObj); sal_Int32 nParCount = mpEngine->GetParagraphCount(); @@ -1274,7 +1274,7 @@ public: void ScColumn::RemoveEditAttribs( sc::ColumnBlockPosition& rBlockPos, SCROW nStartRow, SCROW nEndRow ) { - RemoveEditAttribsHandler aFunc(maCells, &GetDoc()); + RemoveEditAttribsHandler aFunc(maCells, GetDoc()); rBlockPos.miCellPos = sc::ProcessEditText( rBlockPos.miCellPos, maCells, nStartRow, nEndRow, aFunc); @@ -2444,7 +2444,7 @@ formula::FormulaTokenRef ScColumn::ResolveStaticReference( SCROW nRow ) case sc::element_type_edittext: { const EditTextObject* pText = sc::edittext_block::at(*it->data, aPos.second); - OUString aStr = ScEditUtil::GetString(*pText, &GetDoc()); + OUString aStr = ScEditUtil::GetString(*pText, GetDoc()); svl::SharedString aSS( GetDoc().GetSharedStringPool().intern(aStr)); return formula::FormulaTokenRef(new formula::FormulaStringToken(std::move(aSS))); } @@ -2462,12 +2462,12 @@ class ToMatrixHandler ScMatrix& mrMat; SCCOL mnMatCol; SCROW mnTopRow; - ScDocument* mpDoc; + ScDocument& mrDoc; svl::SharedStringPool& mrStrPool; public: - ToMatrixHandler(ScMatrix& rMat, SCCOL nMatCol, SCROW nTopRow, ScDocument* pDoc) : + ToMatrixHandler(ScMatrix& rMat, SCCOL nMatCol, SCROW nTopRow, ScDocument& rDoc) : mrMat(rMat), mnMatCol(nMatCol), mnTopRow(nTopRow), - mpDoc(pDoc), mrStrPool(pDoc->GetSharedStringPool()) {} + mrDoc(rDoc), mrStrPool(rDoc.GetSharedStringPool()) {} void operator() (size_t nRow, double fVal) { @@ -2491,7 +2491,7 @@ public: void operator() (size_t nRow, const EditTextObject* pStr) { - mrMat.PutString(mrStrPool.intern(ScEditUtil::GetString(*pStr, mpDoc)), mnMatCol, nRow - mnTopRow); + mrMat.PutString(mrStrPool.intern(ScEditUtil::GetString(*pStr, mrDoc)), mnMatCol, nRow - mnTopRow); } }; @@ -2502,7 +2502,7 @@ bool ScColumn::ResolveStaticReference( ScMatrix& rMat, SCCOL nMatCol, SCROW nRow if (nRow1 > nRow2) return false; - ToMatrixHandler aFunc(rMat, nMatCol, nRow1, &GetDoc()); + ToMatrixHandler aFunc(rMat, nMatCol, nRow1, GetDoc()); sc::ParseAllNonEmpty(maCells.begin(), maCells, nRow1, nRow2, aFunc); return true; } @@ -2556,14 +2556,14 @@ class FillMatrixHandler size_t mnMatCol; size_t mnTopRow; - ScDocument* mpDoc; + ScDocument& mrDoc; svl::SharedStringPool& mrPool; svl::SharedStringPool* mpPool; // if matrix is not in the same document public: - FillMatrixHandler(ScMatrix& rMat, size_t nMatCol, size_t nTopRow, ScDocument* pDoc, svl::SharedStringPool* pPool) : + FillMatrixHandler(ScMatrix& rMat, size_t nMatCol, size_t nTopRow, ScDocument& rDoc, svl::SharedStringPool* pPool) : mrMat(rMat), mnMatCol(nMatCol), mnTopRow(nTopRow), - mpDoc(pDoc), mrPool(pDoc->GetSharedStringPool()), mpPool(pPool) {} + mrDoc(rDoc), mrPool(rDoc.GetSharedStringPool()), mpPool(pPool) {} void operator() (const sc::CellStoreType::value_type& node, size_t nOffset, size_t nDataSize) { @@ -2607,7 +2607,7 @@ public: std::advance(itEnd, nDataSize); for (; it != itEnd; ++it) { - OUString aStr = ScEditUtil::GetString(**it, mpDoc); + OUString aStr = ScEditUtil::GetString(**it, mrDoc); if (!mpPool) aSSs.push_back(mrPool.intern(aStr)); else @@ -2700,7 +2700,7 @@ public: void ScColumn::FillMatrix( ScMatrix& rMat, size_t nMatCol, SCROW nRow1, SCROW nRow2, svl::SharedStringPool* pPool ) const { - FillMatrixHandler aFunc(rMat, nMatCol, nRow1, &GetDoc(), pPool); + FillMatrixHandler aFunc(rMat, nMatCol, nRow1, GetDoc(), pPool); sc::ParseBlock(maCells.begin(), maCells, aFunc, nRow1, nRow2); } @@ -2727,10 +2727,10 @@ void getBlockIterators( } bool appendToBlock( - ScDocument* pDoc, sc::FormulaGroupContext& rCxt, sc::FormulaGroupContext::ColArray& rColArray, + ScDocument& rDoc, sc::FormulaGroupContext& rCxt, sc::FormulaGroupContext::ColArray& rColArray, size_t nPos, size_t nArrayLen, const sc::CellStoreType::iterator& _it, const sc::CellStoreType::iterator& itEnd ) { - svl::SharedStringPool& rPool = pDoc->GetSharedStringPool(); + svl::SharedStringPool& rPool = rDoc.GetSharedStringPool(); size_t nLenRemain = nArrayLen - nPos; for (sc::CellStoreType::iterator it = _it; it != itEnd; ++it) @@ -2755,7 +2755,7 @@ bool appendToBlock( for (; itData != itDataEnd; ++itData, ++nPos) { - OUString aStr = ScEditUtil::GetString(**itData, pDoc); + OUString aStr = ScEditUtil::GetString(**itData, rDoc); (*rColArray.mpStrArray)[nPos] = rPool.intern(aStr).getData(); } } @@ -2870,7 +2870,7 @@ void copyFirstStringBlock( for (; it != itEnd; ++it, ++itArray) { EditTextObject* pText = *it; - OUString aStr = ScEditUtil::GetString(*pText, &rDoc); + OUString aStr = ScEditUtil::GetString(*pText, rDoc); *itArray = rPool.intern(aStr).getData(); } } @@ -3027,7 +3027,7 @@ formula::VectorRefArray ScColumn::FetchVectorRefArray( SCROW nRow1, SCROW nRow2 // Fill the remaining array with values from the following blocks. size_t nPos = itBlk->size; ++itBlk; - if (!appendToBlock(&rDocument, rCxt, *pColArray, nPos, nRow2+1, itBlk, maCells.end())) + if (!appendToBlock(rDocument, rCxt, *pColArray, nPos, nRow2+1, itBlk, maCells.end())) { rCxt.discardCachedColArray(nTab, nCol); return formula::VectorRefArray(formula::VectorRefArray::Invalid); @@ -3063,7 +3063,7 @@ formula::VectorRefArray ScColumn::FetchVectorRefArray( SCROW nRow1, SCROW nRow2 // Fill the remaining array with values from the following blocks. size_t nPos = itBlk->size; ++itBlk; - if (!appendToBlock(&rDocument, rCxt, *pColArray, nPos, nRow2+1, itBlk, maCells.end())) + if (!appendToBlock(rDocument, rCxt, *pColArray, nPos, nRow2+1, itBlk, maCells.end())) { rCxt.discardCachedColArray(nTab, nCol); return formula::VectorRefArray(formula::VectorRefArray::Invalid); @@ -3111,7 +3111,7 @@ formula::VectorRefArray ScColumn::FetchVectorRefArray( SCROW nRow1, SCROW nRow2 size_t nPos = itBlk->size; ++itBlk; - if (!appendToBlock(&rDocument, rCxt, *pColArray, nPos, nRow2+1, itBlk, maCells.end())) + if (!appendToBlock(rDocument, rCxt, *pColArray, nPos, nRow2+1, itBlk, maCells.end())) { rCxt.discardCachedColArray(nTab, nCol); return formula::VectorRefArray(formula::VectorRefArray::Invalid); @@ -3145,7 +3145,7 @@ formula::VectorRefArray ScColumn::FetchVectorRefArray( SCROW nRow1, SCROW nRow2 // Fill the remaining array with values from the following blocks. size_t nPos = itBlk->size; ++itBlk; - if (!appendToBlock(&rDocument, rCxt, *pColArray, nPos, nRow2+1, itBlk, maCells.end())) + if (!appendToBlock(rDocument, rCxt, *pColArray, nPos, nRow2+1, itBlk, maCells.end())) { rCxt.discardCachedColArray(nTab, nCol); return formula::VectorRefArray(formula::VectorRefArray::Invalid); diff --git a/sc/source/core/data/column3.cxx b/sc/source/core/data/column3.cxx index 973bdaeb7c09..05a97dd02930 100644 --- a/sc/source/core/data/column3.cxx +++ b/sc/source/core/data/column3.cxx @@ -2829,12 +2829,12 @@ class StrCellIterator PosType maPos; sc::CellStoreType::const_iterator miBeg; sc::CellStoreType::const_iterator miEnd; - const ScDocument* mpDoc; + const ScDocument& mrDoc; public: - StrCellIterator(const sc::CellStoreType& rCells, SCROW nStart, const ScDocument* pDoc) : - miBeg(rCells.begin()), miEnd(rCells.end()), mpDoc(pDoc) + StrCellIterator(const sc::CellStoreType& rCells, SCROW nStart, const ScDocument& rDoc) : + miBeg(rCells.begin()), miEnd(rCells.end()), mrDoc(rDoc) { - if (pDoc->ValidRow(nStart)) + if (rDoc.ValidRow(nStart)) maPos = rCells.position(nStart); else // Make this iterator invalid. @@ -2932,7 +2932,7 @@ public: case sc::element_type_edittext: { const EditTextObject* p = sc::edittext_block::at(*maPos.first->data, maPos.second); - return ScEditUtil::GetString(*p, mpDoc); + return ScEditUtil::GetString(*p, mrDoc); } default: ; @@ -2951,8 +2951,8 @@ bool ScColumn::GetDataEntries( // going upward and downward directions in parallel. The start position // cell must be skipped. - StrCellIterator aItrUp(maCells, nStartRow, &GetDoc()); - StrCellIterator aItrDown(maCells, nStartRow+1, &GetDoc()); + StrCellIterator aItrUp(maCells, nStartRow, GetDoc()); + StrCellIterator aItrDown(maCells, nStartRow+1, GetDoc()); bool bMoveUp = aItrUp.valid(); if (!bMoveUp) diff --git a/sc/source/core/data/conditio.cxx b/sc/source/core/data/conditio.cxx index 4882dcbc63ee..36aa0f853cc5 100644 --- a/sc/source/core/data/conditio.cxx +++ b/sc/source/core/data/conditio.cxx @@ -784,7 +784,7 @@ static bool lcl_GetCellContent( const ScRefCellValue& rCell, bool bIsStr1, doubl if (rCell.getType() == CELLTYPE_STRING) rArgStr = rCell.getSharedString()->getString(); else if (rCell.getEditText()) - rArgStr = ScEditUtil::GetString(*rCell.getEditText(), &rDoc); + rArgStr = ScEditUtil::GetString(*rCell.getEditText(), rDoc); break; default: ; diff --git a/sc/source/core/data/dociter.cxx b/sc/source/core/data/dociter.cxx index 6b90faf2b06e..fa72e915010a 100644 --- a/sc/source/core/data/dociter.cxx +++ b/sc/source/core/data/dociter.cxx @@ -452,7 +452,7 @@ bool ScDBQueryDataIterator::DataAccessInternal::getCurrent(Value& rValue) incPos(); else { - rValue.maString = aCell.getString(&mrDoc); + rValue.maString = aCell.getString(mrDoc); rValue.mfValue = 0.0; rValue.mnError = FormulaError::NONE; rValue.mbIsNumber = false; @@ -981,7 +981,7 @@ bool ScCellIterator::getCurrent() OUString ScCellIterator::getString() const { - return maCurCell.getString(&mrDoc); + return maCurCell.getString(mrDoc); } ScCellValue ScCellIterator::getCellValue() const diff --git a/sc/source/core/data/documen2.cxx b/sc/source/core/data/documen2.cxx index 2fb75cb6e777..4dd8638b83fb 100644 --- a/sc/source/core/data/documen2.cxx +++ b/sc/source/core/data/documen2.cxx @@ -1283,7 +1283,7 @@ ScSortedRangeCache& ScDocument::GetSortedRangeCache( const ScRange & rRange, con auto [findIt, bInserted] = mxScSortedRangeCache->aCacheMap.emplace(key, nullptr); if (bInserted) { - findIt->second = std::make_unique<ScSortedRangeCache>(this, rRange, param, pContext, invalid, bNewSearchFunction, nSortedBinarySearch); + findIt->second = std::make_unique<ScSortedRangeCache>(*this, rRange, param, pContext, invalid, bNewSearchFunction, nSortedBinarySearch); StartListeningArea(rRange, false, findIt->second.get()); } return *findIt->second; diff --git a/sc/source/core/data/document.cxx b/sc/source/core/data/document.cxx index 029d53e0f393..d183b996339e 100644 --- a/sc/source/core/data/document.cxx +++ b/sc/source/core/data/document.cxx @@ -3634,7 +3634,7 @@ FormulaError ScDocument::GetStringForFormula( const ScAddress& rPos, OUString& r { case CELLTYPE_STRING: case CELLTYPE_EDIT: - aStr = aCell.getString(this); + aStr = aCell.getString(*this); break; case CELLTYPE_FORMULA: { diff --git a/sc/source/core/data/global.cxx b/sc/source/core/data/global.cxx index ad62505d2f54..bc00dff5b131 100644 --- a/sc/source/core/data/global.cxx +++ b/sc/source/core/data/global.cxx @@ -1153,20 +1153,6 @@ css::lang::Locale& ScGlobal::GetLocale() []() { return new css::lang::Locale( Application::GetSettings().GetLanguageTag().getLocale()); }); } -ScFieldEditEngine& ScGlobal::GetStaticFieldEditEngine() -{ - assert(!bThreadedGroupCalcInProgress); - if (!xFieldEditEngine) - { - // Creating a ScFieldEditEngine with pDocument=NULL leads to document - // specific fields not being resolvable! See - // ScFieldEditEngine::CalcFieldValue(). pEnginePool=NULL lets - // EditEngine internally create and delete a default pool. - xFieldEditEngine.reset(new ScFieldEditEngine( nullptr, nullptr)); - } - return *xFieldEditEngine; -} - sc::SharedStringPoolPurge& ScGlobal::GetSharedStringPoolPurge() { return *comphelper::doubleCheckedInit( pSharedStringPoolPurge, diff --git a/sc/source/core/data/queryiter.cxx b/sc/source/core/data/queryiter.cxx index 6ef734720575..0334dbab42d4 100644 --- a/sc/source/core/data/queryiter.cxx +++ b/sc/source/core/data/queryiter.cxx @@ -219,7 +219,7 @@ void ScQueryCellIteratorBase< accessType, queryType >::PerformQuery() if (bNumSearch) rItemTmp.mfVal = aBFCell.getValue(); else if (bStringSearch) - rItemTmp.maString = svl::SharedString(aBFCell.getString(&rDoc)); + rItemTmp.maString = svl::SharedString(aBFCell.getString(rDoc)); ScQueryEvaluator queryEvaluatorTmp(rDoc, *rDoc.maTabs[nTab], aParamTmp, &mrContext, nullptr, bNewSearchFunction); if (queryEvaluatorTmp.ValidQuery(nRow, (nCol == static_cast<SCCOL>(nFirstQueryField) ? &aCell : nullptr))) diff --git a/sc/source/core/data/table4.cxx b/sc/source/core/data/table4.cxx index 9f33d0dc6d24..edbcbe5e2543 100644 --- a/sc/source/core/data/table4.cxx +++ b/sc/source/core/data/table4.cxx @@ -496,7 +496,7 @@ void ScTable::FillAnalyse( SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2, CellType eType = aCell.getType(); if (eType == CELLTYPE_STRING || eType == CELLTYPE_EDIT) { - aStr2 = aCell.getString(&rDocument); + aStr2 = aCell.getString(rDocument); nFlag2 = lcl_DecompValueString(aStr2, nVal2, &rMinDigits); if (nFlag1 == nFlag2 && aStr == aStr2) { @@ -740,7 +740,7 @@ void ScTable::FillAnalyse( SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2, CellType eType = aCell.getType(); if ( eType == CELLTYPE_STRING || eType == CELLTYPE_EDIT ) { - aStr = aCell.getString(&rDocument); + aStr = aCell.getString(rDocument); nFlag2 = lcl_DecompValueString( aStr, nVal2, &rMinDigits ); if ( nFlag1 == nFlag2 ) { @@ -1467,7 +1467,7 @@ OUString ScTable::GetAutoFillPreview( const ScRange& rSource, SCCOL nEndX, SCROW case CELLTYPE_STRING: case CELLTYPE_EDIT: { - aValue = aCell.getString(&rDocument); + aValue = aCell.getString(rDocument); if ( !(nScFillModeMouseModifier & KEY_MOD1) ) { @@ -1547,7 +1547,7 @@ OUString ScTable::GetAutoFillPreview( const ScRange& rSource, SCCOL nEndX, SCROW case CELLTYPE_STRING: case CELLTYPE_EDIT: { - aValue = aCell.getString(&rDocument); + aValue = aCell.getString(rDocument); nHeadNoneTail = lcl_DecompValueString( aValue, nVal ); if ( nHeadNoneTail ) nStart = static_cast<double>(nVal); @@ -1991,7 +1991,7 @@ void ScTable::FillAutoSimple( if (aSrcCell.getType() == CELLTYPE_STRING) aValue = aSrcCell.getSharedString()->getString(); else - aValue = ScEditUtil::GetString(*aSrcCell.getEditText(), &rDocument); + aValue = ScEditUtil::GetString(*aSrcCell.getEditText(), rDocument); if ( !(nScFillModeMouseModifier & KEY_MOD1) && !bHasFiltered ) { nCellDigits = 0; // look at each source cell individually @@ -2544,7 +2544,7 @@ void ScTable::FillSeries( SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2, if (eCellType == CELLTYPE_STRING) aValue = aSrcCell.getSharedString()->getString(); else - aValue = ScEditUtil::GetString(*aSrcCell.getEditText(), &rDocument); + aValue = ScEditUtil::GetString(*aSrcCell.getEditText(), rDocument); sal_Int32 nStringValue; sal_uInt16 nMinDigits = nArgMinDigits; short nHeadNoneTail = lcl_DecompValueString( aValue, nStringValue, &nMinDigits ); diff --git a/sc/source/core/data/validat.cxx b/sc/source/core/data/validat.cxx index 54104849740b..9c044ed697f6 100644 --- a/sc/source/core/data/validat.cxx +++ b/sc/source/core/data/validat.cxx @@ -620,7 +620,7 @@ bool ScValidationData::IsDataValid( const ScRefCellValue& rCell, const ScAddress break; case CELLTYPE_EDIT: if (rCell.getEditText()) - aString = ScEditUtil::GetString(*rCell.getEditText(), &GetDocument()); + aString = ScEditUtil::GetString(*rCell.getEditText(), GetDocument()); bIsVal = false; break; case CELLTYPE_FORMULA: diff --git a/sc/source/core/tool/cellform.cxx b/sc/source/core/tool/cellform.cxx index d2933814ce8d..c598d0dad509 100644 --- a/sc/source/core/tool/cellform.cxx +++ b/sc/source/core/tool/cellform.cxx @@ -49,7 +49,7 @@ OUString ScCellFormat::GetString( const ScRefCellValue& rCell, sal_uInt32 nForma case CELLTYPE_EDIT: { OUString str; - rContext.NFGetOutputString(rCell.getString(&rDoc), nFormat, str, ppColor ); + rContext.NFGetOutputString(rCell.getString(rDoc), nFormat, str, ppColor ); return str; } case CELLTYPE_VALUE: @@ -140,7 +140,7 @@ OUString ScCellFormat::GetInputString( { case CELLTYPE_STRING: case CELLTYPE_EDIT: - return rCell.getString(&rDoc); + return rCell.getString(rDoc); case CELLTYPE_VALUE: return rContext.NFGetInputLineString(rCell.getDouble(), nFormat, bFiltering, bForceSystemLocale); break; diff --git a/sc/source/core/tool/chgtrack.cxx b/sc/source/core/tool/chgtrack.cxx index e054d3e91004..fadd12a536af 100644 --- a/sc/source/core/tool/chgtrack.cxx +++ b/sc/source/core/tool/chgtrack.cxx @@ -1245,7 +1245,7 @@ ScChangeActionContent::ScChangeActionContent( const sal_uLong nActionNumber, const ScChangeActionState eStateP, const sal_uLong nRejectingNumber, const ScBigRange& aBigRangeP, const OUString& aUserP, const DateTime& aDateTimeP, const OUString& sComment, - ScCellValue aOldCell, const ScDocument* pDoc, const OUString& sOldValue ) : + ScCellValue aOldCell, const ScDocument& rDoc, const OUString& sOldValue ) : ScChangeAction(SC_CAT_CONTENT, aBigRangeP, nActionNumber, nRejectingNumber, eStateP, aDateTimeP, aUserP, sComment), maOldCell(std::move(aOldCell)), maOldValue(sOldValue), @@ -1255,7 +1255,7 @@ ScChangeActionContent::ScChangeActionContent( const sal_uLong nActionNumber, ppPrevInSlot(nullptr) { if (!maOldCell.isEmpty()) - SetCell(maOldValue, maOldCell, 0, pDoc); + SetCell(maOldValue, maOldCell, 0, rDoc); if (!sOldValue.isEmpty()) // #i40704# don't overwrite SetCell result with empty string maOldValue = sOldValue; // set again, because SetCell removes it @@ -1263,7 +1263,7 @@ ScChangeActionContent::ScChangeActionContent( const sal_uLong nActionNumber, ScChangeActionContent::ScChangeActionContent( const sal_uLong nActionNumber, ScCellValue aNewCell, const ScBigRange& aBigRangeP, - const ScDocument* pDoc, const OUString& sNewValue ) : + const ScDocument& rDoc, const OUString& sNewValue ) : ScChangeAction(SC_CAT_CONTENT, aBigRangeP, nActionNumber), maNewCell(std::move(aNewCell)), maNewValue(sNewValue), @@ -1273,7 +1273,7 @@ ScChangeActionContent::ScChangeActionContent( const sal_uLong nActionNumber, ppPrevInSlot(nullptr) { if (!maNewCell.isEmpty()) - SetCell(maNewValue, maNewCell, 0, pDoc); + SetCell(maNewValue, maNewCell, 0, rDoc); if (!sNewValue.isEmpty()) // #i40704# don't overwrite SetCell result with empty string maNewValue = sNewValue; // set again, because SetCell removes it @@ -1338,19 +1338,19 @@ void ScChangeActionContent::SetNewValue( const ScCellValue& rCell, ScDocument* p void ScChangeActionContent::SetOldNewCells( const ScCellValue& rOldCell, sal_uLong nOldFormat, const ScCellValue& rNewCell, - sal_uLong nNewFormat, const ScDocument* pDoc ) + sal_uLong nNewFormat, const ScDocument& rDoc ) { maOldCell = rOldCell; maNewCell = rNewCell; - SetCell(maOldValue, maOldCell, nOldFormat, pDoc); - SetCell(maNewValue, maNewCell, nNewFormat, pDoc); + SetCell(maOldValue, maOldCell, nOldFormat, rDoc); + SetCell(maNewValue, maNewCell, nNewFormat, rDoc); } void ScChangeActionContent::SetNewCell( - const ScCellValue& rCell, const ScDocument* pDoc, const OUString& rFormatted ) + const ScCellValue& rCell, const ScDocument& rDoc, const OUString& rFormatted ) { maNewCell = rCell; - SetCell(maNewValue, maNewCell, 0, pDoc); + SetCell(maNewValue, maNewCell, 0, rDoc); // #i40704# allow to set formatted text here - don't call SetNewValue with string from XML filter if (!rFormatted.isEmpty()) @@ -1378,14 +1378,14 @@ void ScChangeActionContent::SetOldValue( const OUString& rOld, ScDocument* pDoc SetValueString(maOldValue, maOldCell, rOld, pDoc); } -OUString ScChangeActionContent::GetOldString( const ScDocument* pDoc ) const +OUString ScChangeActionContent::GetOldString( const ScDocument& rDoc ) const { - return GetValueString(maOldValue, maOldCell, pDoc); + return GetValueString(maOldValue, maOldCell, rDoc); } -OUString ScChangeActionContent::GetNewString( const ScDocument* pDoc ) const +OUString ScChangeActionContent::GetNewString( const ScDocument& rDoc ) const { - return GetValueString(maNewValue, maNewCell, pDoc); + return GetValueString(maNewValue, maNewCell, rDoc); } OUString ScChangeActionContent::GetDescription( @@ -1404,7 +1404,7 @@ OUString ScChangeActionContent::GetDescription( nPos += aTmpStr.getLength(); } - aTmpStr = GetOldString( &rDoc ); + aTmpStr = GetOldString( rDoc ); if (aTmpStr.isEmpty()) aTmpStr = ScResId( STR_CHANGED_BLANK ); @@ -1415,7 +1415,7 @@ OUString ScChangeActionContent::GetDescription( nPos += aTmpStr.getLength(); } - aTmpStr = GetNewString( &rDoc ); + aTmpStr = GetNewString( rDoc ); if (aTmpStr.isEmpty()) aTmpStr = ScResId( STR_CHANGED_BLANK ); @@ -1540,16 +1540,16 @@ bool ScChangeActionContent::Select( ScDocument& rDoc, ScChangeTrack* pTrack, } OUString ScChangeActionContent::GetStringOfCell( - const ScCellValue& rCell, const ScDocument* pDoc, const ScAddress& rPos ) + const ScCellValue& rCell, const ScDocument& rDoc, const ScAddress& rPos ) { if (NeedsNumberFormat(rCell)) - return GetStringOfCell(rCell, pDoc, pDoc->GetNumberFormat(ScRange(rPos))); + return GetStringOfCell(rCell, rDoc, rDoc.GetNumberFormat(ScRange(rPos))); else - return GetStringOfCell(rCell, pDoc, 0); + return GetStringOfCell(rCell, rDoc, 0); } OUString ScChangeActionContent::GetStringOfCell( - const ScCellValue& rCell, const ScDocument* pDoc, sal_uLong nFormat ) + const ScCellValue& rCell, const ScDocument& rDoc, sal_uLong nFormat ) { if (!GetContentCellType(rCell)) return OUString(); @@ -1557,12 +1557,12 @@ OUString ScChangeActionContent::GetStringOfCell( switch (rCell.getType()) { case CELLTYPE_VALUE: - return pDoc->GetFormatTable()->GetInputLineString(rCell.getDouble(), nFormat); + return rDoc.GetFormatTable()->GetInputLineString(rCell.getDouble(), nFormat); case CELLTYPE_STRING: return rCell.getSharedString()->getString(); case CELLTYPE_EDIT: if (rCell.getEditText()) - return ScEditUtil::GetString(*rCell.getEditText(), pDoc); + return ScEditUtil::GetString(*rCell.getEditText(), rDoc); return OUString(); case CELLTYPE_FORMULA: return rCell.getFormula()->GetFormula(); @@ -1667,7 +1667,7 @@ void ScChangeActionContent::SetValue( rCell.clear(); } -void ScChangeActionContent::SetCell( OUString& rStr, const ScCellValue& rCell, sal_uLong nFormat, const ScDocument* pDoc ) +void ScChangeActionContent::SetCell( OUString& rStr, const ScCellValue& rCell, sal_uLong nFormat, const ScDocument& rDoc ) { rStr.clear(); if (rCell.isEmpty()) @@ -1677,7 +1677,7 @@ void ScChangeActionContent::SetCell( OUString& rStr, const ScCellValue& rCell, s { case CELLTYPE_VALUE : // e.g. remember date as date string - rStr = pDoc->GetFormatTable()->GetInputLineString(rCell.getDouble(), nFormat); + rStr = rDoc.GetFormatTable()->GetInputLineString(rCell.getDouble(), nFormat); break; case CELLTYPE_FORMULA : rCell.getFormula()->SetInChangeTrack(true); @@ -1690,7 +1690,7 @@ void ScChangeActionContent::SetCell( OUString& rStr, const ScCellValue& rCell, s } OUString ScChangeActionContent::GetValueString( - const OUString& rValue, const ScCellValue& rCell, const ScDocument* pDoc ) const + const OUString& rValue, const ScCellValue& rCell, const ScDocument& rDoc ) const { if (!rValue.isEmpty()) { @@ -1703,7 +1703,7 @@ OUString ScChangeActionContent::GetValueString( return rCell.getSharedString()->getString(); case CELLTYPE_EDIT : if (rCell.getEditText()) - return ScEditUtil::GetString(*rCell.getEditText(), pDoc); + return ScEditUtil::GetString(*rCell.getEditText(), rDoc); return OUString(); case CELLTYPE_VALUE : // Is always in rValue return rValue; @@ -2560,11 +2560,11 @@ void ScChangeTrack::AppendContent( if ( !pRefDoc ) pRefDoc = &rDoc; - OUString aOldValue = ScChangeActionContent::GetStringOfCell(rOldCell, pRefDoc, nOldFormat); + OUString aOldValue = ScChangeActionContent::GetStringOfCell(rOldCell, *pRefDoc, nOldFormat); ScCellValue aNewCell; aNewCell.assign(rDoc, rPos); - OUString aNewValue = ScChangeActionContent::GetStringOfCell(aNewCell, &rDoc, rPos); + OUString aNewValue = ScChangeActionContent::GetStringOfCell(aNewCell, rDoc, rPos); if (aOldValue != aNewValue || IsMatrixFormulaRangeDifferent(rOldCell, aNewCell)) { // Only track real changes @@ -2577,21 +2577,21 @@ void ScChangeTrack::AppendContent( } void ScChangeTrack::AppendContent( const ScAddress& rPos, - const ScDocument* pRefDoc ) + const ScDocument& rRefDoc ) { ScCellValue aOldCell; - aOldCell.assign(*pRefDoc, rPos); - OUString aOldValue = ScChangeActionContent::GetStringOfCell(aOldCell, pRefDoc, rPos); + aOldCell.assign(rRefDoc, rPos); + OUString aOldValue = ScChangeActionContent::GetStringOfCell(aOldCell, rRefDoc, rPos); ScCellValue aNewCell; aNewCell.assign(rDoc, rPos); - OUString aNewValue = ScChangeActionContent::GetStringOfCell(aNewCell, &rDoc, rPos); + OUString aNewValue = ScChangeActionContent::GetStringOfCell(aNewCell, rDoc, rPos); if (aOldValue != aNewValue || IsMatrixFormulaRangeDifferent(aOldCell, aNewCell)) { // Only track real changes ScRange aRange( rPos ); ScChangeActionContent* pAct = new ScChangeActionContent( aRange ); - pAct->SetOldValue(aOldCell, pRefDoc, &rDoc); + pAct->SetOldValue(aOldCell, &rRefDoc, &rDoc); pAct->SetNewValue(aNewCell, &rDoc); Append( pAct ); } @@ -2606,7 +2606,7 @@ void ScChangeTrack::AppendContent( const ScAddress& rPos, const ScCellValue& rOl } void ScChangeTrack::SetLastCutMoveRange( const ScRange& rRange, - ScDocument* pRefDoc ) + ScDocument& rRefDoc ) { if ( !pLastCutMove ) return; @@ -2622,18 +2622,18 @@ void ScChangeTrack::SetLastCutMoveRange( const ScRange& rRange, r.aStart.SetRow( -1 - (rRange.aEnd.Row() - rRange.aStart.Row()) ); r.aStart.SetTab( -1 - (rRange.aEnd.Tab() - rRange.aStart.Tab()) ); // Contents in FromRange we should overwrite - LookUpContents( rRange, pRefDoc, 0, 0, 0 ); + LookUpContents( rRange, &rRefDoc, 0, 0, 0 ); } void ScChangeTrack::AppendContentRange( const ScRange& rRange, - ScDocument* pRefDoc, sal_uLong& nStartAction, sal_uLong& nEndAction, + ScDocument& rRefDoc, sal_uLong& nStartAction, sal_uLong& nEndAction, ScChangeActionClipMode eClipMode ) { if ( eClipMode == SC_CACM_CUT ) { ResetLastCut(); pLastCutMove.reset(new ScChangeActionMove( rRange, rRange, this )); - SetLastCutMoveRange( rRange, pRefDoc ); + SetLastCutMoveRange( rRange, rRefDoc ); } SCCOL nCol1; SCROW nRow1; @@ -2677,7 +2677,7 @@ void ScChangeTrack::AppendContentRange( const ScRange& rRange, nStartAction = GetActionMax() + 1; StartBlockModify( ScChangeTrackMsgType::Append, nStartAction ); // Contents to overwrite in ToRange - LookUpContents( aRange, pRefDoc, 0, 0, 0 ); + LookUpContents( aRange, &rRefDoc, 0, 0, 0 ); pLastCutMove->SetStartLastCut( nStartLastCut ); pLastCutMove->SetEndLastCut( nEndLastCut ); Append( pLastCutMove.release() ); @@ -2697,17 +2697,17 @@ void ScChangeTrack::AppendContentRange( const ScRange& rRange, { aPos.SetTab( nTab ); // AppendContent() is a no-op if both cells are empty. - SCCOL lastCol = std::max( pRefDoc->ClampToAllocatedColumns( nTab, nCol2 ), - rDoc.ClampToAllocatedColumns( nTab, nCol2 )); + SCCOL lastCol = std::max( rRefDoc.ClampToAllocatedColumns( nTab, nCol2 ), + rRefDoc.ClampToAllocatedColumns( nTab, nCol2 )); for ( SCCOL nCol = nCol1; nCol <= lastCol; nCol++ ) { aPos.SetCol( nCol ); - SCROW lastRow = std::max( pRefDoc->GetLastDataRow( nTab, nCol, nCol, nRow2 ), - rDoc.GetLastDataRow( nTab, nCol, nCol, nRow2 )); + SCROW lastRow = std::max( rRefDoc.GetLastDataRow( nTab, nCol, nCol, nRow2 ), + rRefDoc.GetLastDataRow( nTab, nCol, nCol, nRow2 )); for ( SCROW nRow = nRow1; nRow <= lastRow; nRow++ ) { aPos.SetRow( nRow ); - AppendContent( aPos, pRefDoc ); + AppendContent( aPos, rRefDoc ); } } } @@ -2752,7 +2752,7 @@ ScChangeActionContent* ScChangeTrack::AppendContentOnTheFly( { ScRange aRange( rPos ); ScChangeActionContent* pAct = new ScChangeActionContent( aRange ); - pAct->SetOldNewCells(rOldCell, nOldFormat, rNewCell, nNewFormat, &rDoc); + pAct->SetOldNewCells(rOldCell, nOldFormat, rNewCell, nNewFormat, rDoc); Append( pAct ); return pAct; } @@ -3112,7 +3112,7 @@ void ScChangeTrack::Undo( sal_uLong nStartAction, sal_uLong nEndAction, bool bMe nEndLastCut = nEnd; pLastCutMove.reset(pMove); SetLastCutMoveRange( - pMove->GetFromRange().MakeRange( rDoc ), &rDoc ); + pMove->GetFromRange().MakeRange( rDoc ), rDoc ); } else delete pMove; @@ -4333,7 +4333,7 @@ bool ScChangeTrack::IsLastAction( sal_uLong nNum ) const sal_uLong ScChangeTrack::AddLoadedGenerated( const ScCellValue& rNewCell, const ScBigRange& aBigRange, const OUString& sNewValue ) { - ScChangeActionContent* pAct = new ScChangeActionContent( --nGeneratedMin, rNewCell, aBigRange, &rDoc, sNewValue ); + ScChangeActionContent* pAct = new ScChangeActionContent( --nGeneratedMin, rNewCell, aBigRange, rDoc, sNewValue ); if ( pFirstGeneratedDelContent ) pFirstGeneratedDelContent->pPrev = pAct; pAct->pNext = pFirstGeneratedDelContent; @@ -4355,14 +4355,9 @@ void ScChangeTrack::AppendCloned( ScChangeAction* pAppend ) } } -ScChangeTrack* ScChangeTrack::Clone( ScDocument* pDocument ) const +ScChangeTrack* ScChangeTrack::Clone( ScDocument& rDocument ) const { - if ( !pDocument ) - { - return nullptr; - } - - std::unique_ptr<ScChangeTrack> pClonedTrack(new ScChangeTrack( *pDocument )); + std::unique_ptr<ScChangeTrack> pClonedTrack(new ScChangeTrack( rDocument )); pClonedTrack->SetTimeNanoSeconds( IsTimeNanoSeconds() ); // clone generated actions @@ -4382,8 +4377,8 @@ ScChangeTrack* ScChangeTrack::Clone( ScDocument* pDocument ) const if (!rNewCell.isEmpty()) { ScCellValue aClonedNewCell; - aClonedNewCell.assign(rNewCell, *pDocument); - OUString aNewValue = rContent.GetNewString( pDocument ); + aClonedNewCell.assign(rNewCell, rDocument); + OUString aNewValue = rContent.GetNewString( rDocument ); pClonedTrack->nGeneratedMin = pGenerated->GetActionNumber() + 1; pClonedTrack->AddLoadedGenerated(aClonedNewCell, pGenerated->GetBigRange(), aNewValue); } @@ -4466,8 +4461,8 @@ ScChangeTrack* ScChangeTrack::Clone( ScDocument* pDocument ) const const ScChangeActionContent& rContent = dynamic_cast<const ScChangeActionContent&>(*pAction); const ScCellValue& rOldCell = rContent.GetOldCell(); ScCellValue aClonedOldCell; - aClonedOldCell.assign(rOldCell, *pDocument); - OUString aOldValue = rContent.GetOldString( pDocument ); + aClonedOldCell.assign(rOldCell, rDocument); + OUString aOldValue = rContent.GetOldString( rDocument ); ScChangeActionContent* pClonedContent = new ScChangeActionContent( pAction->GetActionNumber(), @@ -4478,15 +4473,15 @@ ScChangeTrack* ScChangeTrack::Clone( ScDocument* pDocument ) const pAction->GetDateTimeUTC(), pAction->GetComment(), std::move(aClonedOldCell), - pDocument, + rDocument, aOldValue ); const ScCellValue& rNewCell = rContent.GetNewCell(); if (!rNewCell.isEmpty()) { ScCellValue aClonedNewCell; - aClonedNewCell.assign(rNewCell, *pDocument); - pClonedContent->SetNewValue(aClonedNewCell, pDocument); + aClonedNewCell.assign(rNewCell, rDocument); + pClonedContent->SetNewValue(aClonedNewCell, &rDocument); } pClonedAction = pClonedContent; @@ -4611,7 +4606,7 @@ ScChangeTrack* ScChangeTrack::Clone( ScDocument* pDocument ) const } auto tmp = pClonedTrack.get(); - pDocument->SetChangeTrack( std::move(pClonedTrack) ); + rDocument.SetChangeTrack( std::move(pClonedTrack) ); return tmp; } diff --git a/sc/source/core/tool/dbdata.cxx b/sc/source/core/tool/dbdata.cxx index a52b4523be5d..333a4a12ddb0 100644 --- a/sc/source/core/tool/dbdata.cxx +++ b/sc/source/core/tool/dbdata.cxx @@ -838,7 +838,7 @@ void ScDBData::RefreshTableColumnNames( ScDocument* pDoc ) { if (pCell->hasString()) { - const OUString aStr = pCell->getString( pDoc); + const OUString aStr = pCell->getString(*pDoc); if (aStr.isEmpty()) bHaveEmpty = true; else @@ -890,12 +890,12 @@ void ScDBData::RefreshTableColumnNames( ScDocument* pDoc ) mbTableColumnNamesDirty = false; } -void ScDBData::RefreshTableColumnNames( ScDocument* pDoc, const ScRange& rRange ) +void ScDBData::RefreshTableColumnNames( ScDocument& rDoc, const ScRange& rRange ) { // Header-less tables get names generated, completely empty a full refresh. if (mbTableColumnNamesDirty && (!HasHeader() || maTableColumnNames.empty())) { - RefreshTableColumnNames( pDoc); + RefreshTableColumnNames( &rDoc); return; } @@ -908,7 +908,7 @@ void ScDBData::RefreshTableColumnNames( ScDocument* pDoc, const ScRange& rRange // listener if multiple cells were affected. We don't know if there were // more. Also, we need the full check anyway in case a duplicated name was // entered. - RefreshTableColumnNames( pDoc); + RefreshTableColumnNames( &rDoc); } sal_Int32 ScDBData::GetColumnNameOffset( const OUString& rName ) const @@ -1505,7 +1505,7 @@ void ScDBCollection::RefreshDirtyTableColumnNames() for (auto const& it : maNamedDBs) { if (it->AreTableColumnNamesDirty()) - it->RefreshTableColumnNames( &maNamedDBs.mrDoc, rRange); + it->RefreshTableColumnNames( maNamedDBs.mrDoc, rRange); } } maNamedDBs.maDirtyTableColumnNames.RemoveAll(); diff --git a/sc/source/core/tool/editutil.cxx b/sc/source/core/tool/editutil.cxx index 45972774b836..97b9048413cd 100644 --- a/sc/source/core/tool/editutil.cxx +++ b/sc/source/core/tool/editutil.cxx @@ -54,11 +54,11 @@ using namespace com::sun::star; // delimiters additionally to EditEngine default: -ScEditUtil::ScEditUtil( ScDocument* pDocument, SCCOL nX, SCROW nY, SCTAB nZ, +ScEditUtil::ScEditUtil( ScDocument& rDocument, SCCOL nX, SCROW nY, SCTAB nZ, const Point& rCellPos, OutputDevice* pDevice, double nScaleX, double nScaleY, const Fraction& rX, const Fraction& rY, bool bPrintTwips ) : - pDoc(pDocument),nCol(nX),nRow(nY),nTab(nZ), + rDoc(rDocument),nCol(nX),nRow(nY),nTab(nZ), aCellPos(rCellPos),pDev(pDevice), nPPTX(nScaleX),nPPTY(nScaleY),aZoomX(rX),aZoomY(rY), bInPrintTwips(bPrintTwips) {} @@ -119,7 +119,7 @@ OUString ScEditUtil::GetMultilineString( const EditTextObject& rEdit ) return lcl_GetDelimitedString(rEdit, ' '); } -OUString ScEditUtil::GetString( const EditTextObject& rEditText, const ScDocument* pDoc ) +OUString ScEditUtil::GetString( const EditTextObject& rEditText, const ScDocument& rDoc ) { if( !rEditText.HasField()) return GetMultilineString( rEditText ); @@ -127,21 +127,12 @@ OUString ScEditUtil::GetString( const EditTextObject& rEditText, const ScDocumen static std::mutex aMutex; std::scoped_lock aGuard( aMutex); // ScFieldEditEngine is needed to resolve field contents. - if (pDoc) - { - /* TODO: make ScDocument::GetEditEngine() const? Most likely it's only - * not const because of the pointer assignment, make that mutable, and - * then remove the ugly const_cast here. */ - EditEngine& rEE = const_cast<ScDocument*>(pDoc)->GetEditEngine(); - rEE.SetText( rEditText); - return GetMultilineString( rEE); - } - else - { - EditEngine& rEE = ScGlobal::GetStaticFieldEditEngine(); - rEE.SetText( rEditText); - return GetMultilineString( rEE); - } + /* TODO: make ScDocument::GetEditEngine() const? Most likely it's only + * not const because of the pointer assignment, make that mutable, and + * then remove the ugly const_cast here. */ + EditEngine& rEE = const_cast<ScDocument&>(rDoc).GetEditEngine(); + rEE.SetText( rEditText); + return GetMultilineString( rEE); } std::unique_ptr<EditTextObject> ScEditUtil::CreateURLObjectFromURL( ScDocument& rDoc, const OUString& rURL, const OUString& rText ) @@ -311,7 +302,7 @@ OUString ScEditUtil::GetCellFieldValue( tools::Long ScEditUtil::GetIndent(const ScPatternAttr* pPattern) const { if (!pPattern) - pPattern = pDoc->GetPattern( nCol, nRow, nTab ); + pPattern = rDoc.GetPattern( nCol, nRow, nTab ); if ( pPattern->GetItem(ATTR_HOR_JUSTIFY).GetValue() == SvxCellHorJustify::Left ) @@ -329,7 +320,7 @@ void ScEditUtil::GetMargins(const ScPatternAttr* pPattern, tools::Long& nLeftMar tools::Long& nRightMargin, tools::Long& nBottomMargin) const { if (!pPattern) - pPattern = pDoc->GetPattern( nCol, nRow, nTab ); + pPattern = rDoc.GetPattern( nCol, nRow, nTab ); const SvxMarginItem* pMargin = &pPattern->GetItem(ATTR_MARGIN); if (!pMargin) @@ -347,16 +338,16 @@ tools::Rectangle ScEditUtil::GetEditArea( const ScPatternAttr* pPattern, bool bF // (sal_False for querying URLs etc.) if (!pPattern) - pPattern = pDoc->GetPattern( nCol, nRow, nTab ); + pPattern = rDoc.GetPattern( nCol, nRow, nTab ); Point aStartPos = aCellPos; bool bIsTiledRendering = comphelper::LibreOfficeKit::isActive(); - bool bLayoutRTL = pDoc->IsLayoutRTL( nTab ); + bool bLayoutRTL = rDoc.IsLayoutRTL( nTab ); tools::Long nLayoutSign = (bLayoutRTL && !bIsTiledRendering) ? -1 : 1; const ScMergeAttr* pMerge = &pPattern->GetItem(ATTR_MERGE); - tools::Long nCellX = pDoc->GetColWidth(nCol,nTab); + tools::Long nCellX = rDoc.GetColWidth(nCol,nTab); if (!bInPrintTwips) nCellX = static_cast<tools::Long>( nCellX * nPPTX ); if ( pMerge->GetColMerge() > 1 ) @@ -364,20 +355,20 @@ tools::Rectangle ScEditUtil::GetEditArea( const ScPatternAttr* pPattern, bool bF SCCOL nCountX = pMerge->GetColMerge(); for (SCCOL i=1; i<nCountX; i++) { - tools::Long nColWidth = pDoc->GetColWidth(nCol+i,nTab); + tools::Long nColWidth = rDoc.GetColWidth(nCol+i,nTab); nCellX += (bInPrintTwips ? nColWidth : static_cast<tools::Long>( nColWidth * nPPTX )); } } - tools::Long nCellY = pDoc->GetRowHeight(nRow,nTab); + tools::Long nCellY = rDoc.GetRowHeight(nRow,nTab); if (!bInPrintTwips) nCellY = static_cast<tools::Long>( nCellY * nPPTY ); if ( pMerge->GetRowMerge() > 1 ) { SCROW nCountY = pMerge->GetRowMerge(); if (bInPrintTwips) - nCellY += pDoc->GetRowHeight(nRow + 1, nRow + nCountY - 1, nTab); + nCellY += rDoc.GetRowHeight(nRow + 1, nRow + nCountY - 1, nTab); else - nCellY += pDoc->GetScaledRowHeight( nRow+1, nRow+nCountY-1, nTab, nPPTY); + nCellY += rDoc.GetScaledRowHeight( nRow+1, nRow+nCountY-1, nTab, nPPTY); } tools::Long nRightMargin = 0; @@ -424,7 +415,7 @@ tools::Rectangle ScEditUtil::GetEditArea( const ScPatternAttr* pPattern, bool bF MapMode aMode = pDev->GetMapMode(); pDev->SetMapMode(MapMode(bInPrintTwips ? MapUnit::MapTwip : MapUnit::MapPixel)); - tools::Long nTextHeight = pDoc->GetNeededSize( nCol, nRow, nTab, + tools::Long nTextHeight = rDoc.GetNeededSize( nCol, nRow, nTab, pDev, nPPTX, nPPTY, aZoomX, aZoomY, false /* bWidth */, false /* bTotalSize */, bInPrintTwips ); if (!nTextHeight) @@ -738,17 +729,17 @@ void ScEditEngineDefaulter::RemoveParaAttribs() SetUpdateLayout( true ); } -ScTabEditEngine::ScTabEditEngine( ScDocument* pDoc ) - : ScFieldEditEngine( pDoc, pDoc->GetEnginePool() ) +ScTabEditEngine::ScTabEditEngine( ScDocument& rDoc ) + : ScFieldEditEngine( &rDoc, rDoc.GetEnginePool() ) { - SetEditTextObjectPool( pDoc->GetEditPool() ); - const ScPatternAttr& rScPatternAttr(pDoc->getCellAttributeHelper().getDefaultCellAttribute()); + SetEditTextObjectPool( rDoc.GetEditPool() ); + const ScPatternAttr& rScPatternAttr(rDoc.getCellAttributeHelper().getDefaultCellAttribute()); Init(rScPatternAttr); } ScTabEditEngine::ScTabEditEngine( const ScPatternAttr& rPattern, - SfxItemPool* pEngineItemPool, ScDocument* pDoc, SfxItemPool* pTextObjectPool ) - : ScFieldEditEngine( pDoc, pEngineItemPool, pTextObjectPool ) + SfxItemPool* pEngineItemPool, ScDocument& rDoc, SfxItemPool* pTextObjectPool ) + : ScFieldEditEngine( &rDoc, pEngineItemPool, pTextObjectPool ) { if ( pTextObjectPool ) SetEditTextObjectPool( pTextObjectPool ); diff --git a/sc/source/core/tool/interpr3.cxx b/sc/source/core/tool/interpr3.cxx index 2b10e0f1a9e4..505f551d73db 100644 --- a/sc/source/core/tool/interpr3.cxx +++ b/sc/source/core/tool/interpr3.cxx @@ -4457,12 +4457,12 @@ short ScInterpreter::CompareCell( sal_uInt16 nSort, if (eType1 == CELLTYPE_STRING) aStr1 = rCell1.getSharedString()->getString(); else - aStr1 = rCell1.getString(&mrDoc); + aStr1 = rCell1.getString(mrDoc); if (eType2 == CELLTYPE_STRING) aStr2 = rCell2.getSharedString()->getString(); else - aStr2 = rCell2.getString(&mrDoc); + aStr2 = rCell2.getString(mrDoc); CollatorWrapper& rSortCollator = ScGlobal::GetCollator(aSortParam.bCaseSens); nRes = static_cast<short>( rSortCollator.compareString( aStr1, aStr2 ) ); diff --git a/sc/source/core/tool/interpr4.cxx b/sc/source/core/tool/interpr4.cxx index fd48ba4aebe0..d72f645afba1 100644 --- a/sc/source/core/tool/interpr4.cxx +++ b/sc/source/core/tool/interpr4.cxx @@ -233,7 +233,7 @@ double ScInterpreter::GetCellValueOrZero( const ScAddress& rPos, const ScRefCell { // SUM(A1:A2) differs from A1+A2. No good. But people insist on // it ... #i5658# - OUString aStr = rCell.getString(&mrDoc); + OUString aStr = rCell.getString(mrDoc); fValue = ConvertStringToValue( aStr ); } break; @@ -253,7 +253,7 @@ void ScInterpreter::GetCellString( svl::SharedString& rStr, const ScRefCellValue { case CELLTYPE_STRING: case CELLTYPE_EDIT: - rStr = rCell.getSharedString(&mrDoc, mrStrPool); + rStr = rCell.getSharedString(mrDoc, mrStrPool); break; case CELLTYPE_FORMULA: { @@ -404,7 +404,7 @@ bool ScInterpreter::CreateStringArr(SCCOL nCol1, SCROW nRow1, SCTAB nTab1, { case CELLTYPE_STRING: case CELLTYPE_EDIT: - aStr = aCell.getString(&mrDoc); + aStr = aCell.getString(mrDoc); break; case CELLTYPE_FORMULA: if (!aCell.getFormula()->IsValue()) @@ -508,7 +508,7 @@ bool ScInterpreter::CreateCellArr(SCCOL nCol1, SCROW nRow1, SCTAB nTab1, { case CELLTYPE_STRING : case CELLTYPE_EDIT : - aStr = aCell.getString(&mrDoc); + aStr = aCell.getString(mrDoc); nType = 1; break; case CELLTYPE_VALUE : @@ -1419,7 +1419,7 @@ void ScInterpreter::PopRefListPushMatrixOrRef() else if (aCell.hasEmptyValue()) xMat->PutEmpty( 0, i); else if (aCell.hasString()) - xMat->PutString( mrStrPool.intern( aCell.getString(&mrDoc)), 0, i); + xMat->PutString( mrStrPool.intern( aCell.getString(mrDoc)), 0, i); else xMat->PutDouble( aCell.getValue(), 0, i); } @@ -3562,7 +3562,7 @@ bool ScInterpreter::SetSbxVariable( SbxVariable* pVar, const ScAddress& rPos ) break; case CELLTYPE_STRING : case CELLTYPE_EDIT : - pVar->PutString(aCell.getString(&mrDoc)); + pVar->PutString(aCell.getString(mrDoc)); break; case CELLTYPE_FORMULA : nErr = aCell.getFormula()->GetErrCode(); diff --git a/sc/source/core/tool/interpr5.cxx b/sc/source/core/tool/interpr5.cxx index ba5592a935a0..6443737d2dcf 100644 --- a/sc/source/core/tool/interpr5.cxx +++ b/sc/source/core/tool/interpr5.cxx @@ -431,7 +431,7 @@ ScMatrixRef ScInterpreter::CreateMatrixFromDoubleRef( const FormulaToken* pToken } else if (aCell.hasString()) { - pMat->PutString( mrStrPool.intern( aCell.getString(&mrDoc)), nMatCol, nMatRow); + pMat->PutString( mrStrPool.intern( aCell.getString(mrDoc)), nMatCol, nMatRow); } else { diff --git a/sc/source/core/tool/rangecache.cxx b/sc/source/core/tool/rangecache.cxx index f5e98343455b..a6437fb819de 100644 --- a/sc/source/core/tool/rangecache.cxx +++ b/sc/source/core/tool/rangecache.cxx @@ -49,12 +49,12 @@ static ScSortedRangeCache::ValueType toValueType(const ScQueryParam& param) : ScSortedRangeCache::ValueType::StringsCaseInsensitive; } -ScSortedRangeCache::ScSortedRangeCache(ScDocument* pDoc, const ScRange& rRange, +ScSortedRangeCache::ScSortedRangeCache(ScDocument& rDoc, const ScRange& rRange, const ScQueryParam& param, ScInterpreterContext* context, bool invalid, bool bNewSearchFunction, sal_uInt8 nSortedBinarySearch) : maRange(rRange) - , mpDoc(pDoc) + , mrDoc(rDoc) , mValid(false) , mRowSearch(param.bByRow) , mValueType(toValueType(param)) @@ -80,7 +80,7 @@ ScSortedRangeCache::ScSortedRangeCache(ScDocument* pDoc, const ScRange& rRange, SCCOL startCol = maRange.aStart.Col(); SCCOL endCol = maRange.aEnd.Col(); if (!item.mbMatchEmpty) - if (!pDoc->ShrinkToDataArea(nTab, startCol, startRow, endCol, endRow)) + if (!rDoc.ShrinkToDataArea(nTab, startCol, startRow, endCol, endRow)) return; // no data cells, no need for a cache if (mValueType == ValueType::Values) @@ -96,7 +96,7 @@ ScSortedRangeCache::ScSortedRangeCache(ScDocument* pDoc, const ScRange& rRange, { for (SCROW nRow = startRow; nRow <= endRow; ++nRow) { - ScRefCellValue cell(pDoc->GetRefCellValue(ScAddress(nCol, nRow, nTab))); + ScRefCellValue cell(rDoc.GetRefCellValue(ScAddress(nCol, nRow, nTab))); if (ScQueryEvaluator::isQueryByValue(mQueryOp, mQueryType, cell)) colrowData.push_back(ColRowData{ mRowSearch ? nRow : nCol, cell.getValue() }); else if (ScQueryEvaluator::isQueryByString(mQueryOp, mQueryType, cell)) @@ -112,11 +112,11 @@ ScSortedRangeCache::ScSortedRangeCache(ScDocument* pDoc, const ScRange& rRange, // the whole column which includes a textual header). But if it can possibly // match, then bail out and leave it to the unoptimized case. // TODO Maybe it would actually work to use the numeric value obtained here? - if (!bNewSearchFunction && !ScQueryEvaluator::isMatchWholeCell(*pDoc, mQueryOp)) + if (!bNewSearchFunction && !ScQueryEvaluator::isMatchWholeCell(rDoc, mQueryOp)) return; // substring matching cannot be sorted, but new search functions are sorted sal_uInt32 format = 0; double value; - if (context->NFIsNumberFormat(cell.getString(pDoc), format, value)) + if (context->NFIsNumberFormat(cell.getString(rDoc), format, value)) return; } } @@ -169,14 +169,14 @@ ScSortedRangeCache::ScSortedRangeCache(ScDocument* pDoc, const ScRange& rRange, std::vector<ColRowData> colrowData; // Try to reuse as much ScQueryEvaluator code as possible, this should // basically do the same comparisons. - assert(pDoc->FetchTable(nTab) != nullptr); - ScQueryEvaluator evaluator(*pDoc, *pDoc->FetchTable(nTab), param, context, nullptr, + assert(rDoc.FetchTable(nTab) != nullptr); + ScQueryEvaluator evaluator(rDoc, *rDoc.FetchTable(nTab), param, context, nullptr, bNewSearchFunction); for (SCCOL nCol = startCol; nCol <= endCol; ++nCol) { for (SCROW nRow = startRow; nRow <= endRow; ++nRow) { - ScRefCellValue cell(pDoc->GetRefCellValue(ScAddress(nCol, nRow, nTab))); + ScRefCellValue cell(rDoc.GetRefCellValue(ScAddress(nCol, nRow, nTab))); // This should be used only with ScQueryEntry::ByString, and that // means that ScQueryEvaluator::isQueryByString() should be the only // possibility in the generic handling in ScQueryEvaluator::processEntry() @@ -250,11 +250,11 @@ ScSortedRangeCache::ScSortedRangeCache(ScDocument* pDoc, const ScRange& rRange, void ScSortedRangeCache::Notify(const SfxHint& rHint) { - if (!mpDoc->IsInDtorClear()) + if (!mrDoc.IsInDtorClear()) { if (rHint.GetId() == SfxHintId::ScDataChanged || rHint.GetId() == SfxHintId::ScAreaChanged) { - mpDoc->RemoveSortedRangeCache(*this); + mrDoc.RemoveSortedRangeCache(*this); // this ScSortedRangeCache is deleted by RemoveSortedRangeCache } } diff --git a/sc/source/core/tool/rangeseq.cxx b/sc/source/core/tool/rangeseq.cxx index 9549a78c1952..47f81e7bfe46 100644 --- a/sc/source/core/tool/rangeseq.cxx +++ b/sc/source/core/tool/rangeseq.cxx @@ -274,7 +274,7 @@ bool ScRangeToSequence::FillMixedArray( uno::Any& rAny, ScDocument& rDoc, const else if (aCell.hasNumeric()) rElement <<= aCell.getValue(); else - rElement <<= aCell.getString(&rDoc); + rElement <<= aCell.getString(rDoc); } pRowAry[nRow] = std::move(aColSeq); } diff --git a/sc/source/filter/dif/difexp.cxx b/sc/source/filter/dif/difexp.cxx index 3d769e5138f7..94f77aef829d 100644 --- a/sc/source/filter/dif/difexp.cxx +++ b/sc/source/filter/dif/difexp.cxx @@ -33,21 +33,21 @@ #include <formula/errorcodes.hxx> #include <tools/stream.hxx> -void ScFormatFilterPluginImpl::ScExportDif( SvStream& rStream, ScDocument* pDoc, +void ScFormatFilterPluginImpl::ScExportDif( SvStream& rStream, ScDocument& rDoc, const ScAddress& rOutPos, const rtl_TextEncoding eNach ) { SCCOL nEndCol; SCROW nEndRow; - pDoc->GetTableArea( rOutPos.Tab(), nEndCol, nEndRow ); + rDoc.GetTableArea( rOutPos.Tab(), nEndCol, nEndRow ); ScAddress aEnd( nEndCol, nEndRow, rOutPos.Tab() ); ScAddress aStart( rOutPos ); aStart.PutInOrder( aEnd ); - ScExportDif( rStream, pDoc, ScRange( aStart, aEnd ), eNach ); + ScExportDif( rStream, rDoc, ScRange( aStart, aEnd ), eNach ); } -void ScFormatFilterPluginImpl::ScExportDif( SvStream& rOut, ScDocument* pDoc, +void ScFormatFilterPluginImpl::ScExportDif( SvStream& rOut, ScDocument& rDoc, const ScRange&rRange, const rtl_TextEncoding eCharSet ) { OSL_ENSURE( rRange.aStart <= rRange.aEnd, "*ScExportDif(): Range not sorted!" ); @@ -99,14 +99,14 @@ void ScFormatFilterPluginImpl::ScExportDif( SvStream& rOut, ScDocument* pDoc, SCROW nNumRows = nEndRow - rRange.aStart.Row() + 1; SCTAB nTab = rRange.aStart.Tab(); - ScProgress aPrgrsBar( pDoc->GetDocumentShell(), ScResId( STR_LOAD_DOC ), nNumRows, true ); + ScProgress aPrgrsBar( rDoc.GetDocumentShell(), ScResId( STR_LOAD_DOC ), nNumRows, true ); aPrgrsBar.SetState( 0 ); // TABLE - OSL_ENSURE( pDoc->HasTable( nTab ), "*ScExportDif(): Table not existent!" ); + OSL_ENSURE( rDoc.HasTable( nTab ), "*ScExportDif(): Table not existent!" ); - pDoc->GetName( nTab, aString ); + rDoc.GetName( nTab, aString ); aOS.append(OUString::Concat(pKeyTABLE) + " 0,1 \"" + aString @@ -154,7 +154,7 @@ void ScFormatFilterPluginImpl::ScExportDif( SvStream& rOut, ScDocument* pDoc, { assert( aOS.isEmpty() && "aOS should be empty"); bool bWriteStringData = false; - ScRefCellValue aCell(*pDoc, ScAddress(nColCnt, nRowCnt, nTab)); + ScRefCellValue aCell(rDoc, ScAddress(nColCnt, nRowCnt, nTab)); switch (aCell.getType()) { @@ -162,12 +162,12 @@ void ScFormatFilterPluginImpl::ScExportDif( SvStream& rOut, ScDocument* pDoc, aOS.append(pEmptyData); break; case CELLTYPE_VALUE: - aString = pDoc->GetInputString( nColCnt, nRowCnt, nTab ); + aString = rDoc.GetInputString( nColCnt, nRowCnt, nTab ); aOS.append(pNumData + aString + " V "); break; case CELLTYPE_EDIT: case CELLTYPE_STRING: - aString = aCell.getString(pDoc); + aString = aCell.getString(rDoc); bWriteStringData = true; break; case CELLTYPE_FORMULA: @@ -175,7 +175,7 @@ void ScFormatFilterPluginImpl::ScExportDif( SvStream& rOut, ScDocument* pDoc, aOS.append(pNumDataERROR); else if (aCell.getFormula()->IsValue()) { - aString = pDoc->GetInputString( nColCnt, nRowCnt, nTab ); + aString = rDoc.GetInputString( nColCnt, nRowCnt, nTab ); aOS.append(pNumData + aString + " V "); } else diff --git a/sc/source/filter/excel/excel.cxx b/sc/source/filter/excel/excel.cxx index aae72134bf0d..a5db5b37f887 100644 --- a/sc/source/filter/excel/excel.cxx +++ b/sc/source/filter/excel/excel.cxx @@ -442,7 +442,7 @@ extern "C" SAL_DLLPUBLIC_EXPORT bool TestImportCalcRTF(SvStream &rStream) try { - bRet = ScFormatFilter::Get().ScImportRTF(rStream, OUString(), &aDocument, aRange) == ERRCODE_NONE; + bRet = ScFormatFilter::Get().ScImportRTF(rStream, OUString(), aDocument, aRange) == ERRCODE_NONE; } catch (const std::range_error&) { diff --git a/sc/source/filter/html/htmlimp.cxx b/sc/source/filter/html/htmlimp.cxx index d0dbefc3f2f3..1b8845cebd5c 100644 --- a/sc/source/filter/html/htmlimp.cxx +++ b/sc/source/filter/html/htmlimp.cxx @@ -43,11 +43,11 @@ #include <ftools.hxx> #include <tokenarray.hxx> -ErrCode ScFormatFilterPluginImpl::ScImportHTML( SvStream &rStream, const OUString& rBaseURL, ScDocument *pDoc, +ErrCode ScFormatFilterPluginImpl::ScImportHTML( SvStream &rStream, const OUString& rBaseURL, ScDocument& rDoc, ScRange& rRange, double nOutputFactor, bool bCalcWidthHeight, SvNumberFormatter* pFormatter, bool bConvertDate, bool bConvertScientific ) { - ScHTMLImport aImp( pDoc, rBaseURL, rRange, bCalcWidthHeight ); + ScHTMLImport aImp( rDoc, rBaseURL, rRange, bCalcWidthHeight ); ErrCode nErr = aImp.Read( rStream, rBaseURL ); ScRange aR = aImp.GetRange(); rRange.aEnd = aR.aEnd; @@ -55,18 +55,18 @@ ErrCode ScFormatFilterPluginImpl::ScImportHTML( SvStream &rStream, const OUStrin return nErr; } -std::unique_ptr<ScEEAbsImport> ScFormatFilterPluginImpl::CreateHTMLImport( ScDocument* pDocP, const OUString& rBaseURL, const ScRange& rRange ) +std::unique_ptr<ScEEAbsImport> ScFormatFilterPluginImpl::CreateHTMLImport( ScDocument& rDoc, const OUString& rBaseURL, const ScRange& rRange ) { - return std::make_unique<ScHTMLImport>( pDocP, rBaseURL, rRange, true/*bCalcWidthHeight*/ ); + return std::make_unique<ScHTMLImport>( rDoc, rBaseURL, rRange, true/*bCalcWidthHeight*/ ); } -ScHTMLImport::ScHTMLImport( ScDocument* pDocP, const OUString& rBaseURL, const ScRange& rRange, bool bCalcWidthHeight ) : - ScEEImport( pDocP, rRange ) +ScHTMLImport::ScHTMLImport( ScDocument& rDoc, const OUString& rBaseURL, const ScRange& rRange, bool bCalcWidthHeight ) : + ScEEImport( rDoc, rRange ) { Size aPageSize; OutputDevice* pDefaultDev = Application::GetDefaultDevice(); - const OUString aPageStyle = mpDoc->GetPageStyle( rRange.aStart.Tab() ); - ScStyleSheet* pStyleSheet = static_cast<ScStyleSheet*>(mpDoc-> + const OUString aPageStyle = mrDoc.GetPageStyle( rRange.aStart.Tab() ); + ScStyleSheet* pStyleSheet = static_cast<ScStyleSheet*>(mrDoc. GetStyleSheetPool()->Find( aPageStyle, SfxStyleFamily::Page )); if ( pStyleSheet ) { @@ -94,9 +94,9 @@ ScHTMLImport::ScHTMLImport( ScDocument* pDocP, const OUString& rBaseURL, const S SvxPaperInfo::GetPaperSize( PAPER_A4 ), MapMode( MapUnit::MapTwip ) ); } if( bCalcWidthHeight ) - mpParser.reset( new ScHTMLLayoutParser( mpEngine.get(), rBaseURL, aPageSize, pDocP )); + mpParser.reset( new ScHTMLLayoutParser( mpEngine.get(), rBaseURL, aPageSize, rDoc )); else - mpParser.reset( new ScHTMLQueryParser( mpEngine.get(), pDocP )); + mpParser.reset( new ScHTMLQueryParser( mpEngine.get(), rDoc )); } void ScHTMLImport::InsertRangeName( ScDocument& rDoc, const OUString& rName, const ScRange& rRange ) @@ -123,7 +123,7 @@ void ScHTMLImport::WriteToDocument( return; // set cell borders for HTML table cells - pGlobTable->ApplyCellBorders( mpDoc, maRange.aStart ); + pGlobTable->ApplyCellBorders( mrDoc, maRange.aStart ); // correct cell borders for merged cells for ( size_t i = 0, n = pParser->ListSize(); i < n; ++i ) @@ -132,27 +132,27 @@ void ScHTMLImport::WriteToDocument( if( (pEntry->nColOverlap > 1) || (pEntry->nRowOverlap > 1) ) { SCTAB nTab = maRange.aStart.Tab(); - const ScMergeAttr* pItem = mpDoc->GetAttr( pEntry->nCol, pEntry->nRow, nTab, ATTR_MERGE ); + const ScMergeAttr* pItem = mrDoc.GetAttr( pEntry->nCol, pEntry->nRow, nTab, ATTR_MERGE ); if( pItem->IsMerged() ) { SCCOL nColMerge = pItem->GetColMerge(); SCROW nRowMerge = pItem->GetRowMerge(); - const SvxBoxItem* pToItem = mpDoc->GetAttr( pEntry->nCol, pEntry->nRow, nTab, ATTR_BORDER ); + const SvxBoxItem* pToItem = mrDoc.GetAttr( pEntry->nCol, pEntry->nRow, nTab, ATTR_BORDER ); SvxBoxItem aNewItem( *pToItem ); if( nColMerge > 1 ) { const SvxBoxItem* pFromItem = - mpDoc->GetAttr( pEntry->nCol + nColMerge - 1, pEntry->nRow, nTab, ATTR_BORDER ); + mrDoc.GetAttr( pEntry->nCol + nColMerge - 1, pEntry->nRow, nTab, ATTR_BORDER ); aNewItem.SetLine( pFromItem->GetLine( SvxBoxItemLine::RIGHT ), SvxBoxItemLine::RIGHT ); } if( nRowMerge > 1 ) { const SvxBoxItem* pFromItem = - mpDoc->GetAttr( pEntry->nCol, pEntry->nRow + nRowMerge - 1, nTab, ATTR_BORDER ); + mrDoc.GetAttr( pEntry->nCol, pEntry->nRow + nRowMerge - 1, nTab, ATTR_BORDER ); aNewItem.SetLine( pFromItem->GetLine( SvxBoxItemLine::BOTTOM ), SvxBoxItemLine::BOTTOM ); } - mpDoc->ApplyAttr( pEntry->nCol, pEntry->nRow, nTab, aNewItem ); + mrDoc.ApplyAttr( pEntry->nCol, pEntry->nRow, nTab, aNewItem ); } } } @@ -162,10 +162,10 @@ void ScHTMLImport::WriteToDocument( ScRange aNewRange( maRange.aStart ); aNewRange.aEnd.IncCol( static_cast<SCCOL>(pGlobTable->GetDocSize( tdCol )) - 1 ); aNewRange.aEnd.IncRow( pGlobTable->GetDocSize( tdRow ) - 1 ); - InsertRangeName( *mpDoc, ScfTools::GetHTMLDocName(), aNewRange ); + InsertRangeName( mrDoc, ScfTools::GetHTMLDocName(), aNewRange ); // 2 - all tables - InsertRangeName( *mpDoc, ScfTools::GetHTMLTablesName(), ScRange( maRange.aStart ) ); + InsertRangeName( mrDoc, ScfTools::GetHTMLTablesName(), ScRange( maRange.aStart ) ); // 3 - single tables SCCOL nColDiff = maRange.aStart.Col(); @@ -178,7 +178,7 @@ void ScHTMLImport::WriteToDocument( while( (pTable = pGlobTable->FindNestedTable( ++nTableId )) != nullptr ) { pTable->GetDocRange( aNewRange ); - if (!aNewRange.Move( nColDiff, nRowDiff, nTabDiff, aErrorRange, *mpDoc )) + if (!aNewRange.Move( nColDiff, nRowDiff, nTabDiff, aErrorRange, mrDoc )) { assert(!"can't move"); } @@ -191,8 +191,8 @@ void ScHTMLImport::WriteToDocument( if (!pTable->GetTableCaption().isEmpty()) aName.append(" - " + pTable->GetTableCaption()); const OUString sName(aName.makeStringAndClear()); - if (!mpDoc->GetRangeName()->findByUpperName(ScGlobal::getCharClass().uppercase(sName))) - InsertRangeName(*mpDoc, sName, aNewRange); + if (!mrDoc.GetRangeName()->findByUpperName(ScGlobal::getCharClass().uppercase(sName))) + InsertRangeName(mrDoc, sName, aNewRange); } } diff --git a/sc/source/filter/html/htmlpars.cxx b/sc/source/filter/html/htmlpars.cxx index a4e0f7069a1f..bc4f128d8277 100644 --- a/sc/source/filter/html/htmlpars.cxx +++ b/sc/source/filter/html/htmlpars.cxx @@ -289,9 +289,9 @@ void ScHTMLStyles::insertProp( // BASE class for HTML parser classes -ScHTMLParser::ScHTMLParser( EditEngine* pEditEngine, ScDocument* pDoc ) : +ScHTMLParser::ScHTMLParser( EditEngine* pEditEngine, ScDocument& rDoc ) : ScEEParser( pEditEngine ), - mpDoc( pDoc ) + mrDoc( rDoc ) { maFontHeights[0] = officecfg::Office::Common::Filter::HTML::Import::FontSize::Size_1::get() * 20; maFontHeights[1] = officecfg::Office::Common::Filter::HTML::Import::FontSize::Size_2::get() * 20; @@ -308,8 +308,8 @@ ScHTMLParser::~ScHTMLParser() ScHTMLLayoutParser::ScHTMLLayoutParser( EditEngine* pEditP, OUString _aBaseURL, const Size& aPageSizeP, - ScDocument* pDocP ) : - ScHTMLParser( pEditP, pDocP ), + ScDocument& rDoc ) : + ScHTMLParser( pEditP, rDoc ), aPageSize( aPageSizeP ), aBaseURL(std::move( _aBaseURL )), xLockedList( new ScRangeList ), @@ -351,7 +351,7 @@ ErrCode ScHTMLLayoutParser::Read( SvStream& rStream, const OUString& rBaseURL ) Link<HtmlImportInfo&,void> aOldLink = pEdit->GetHtmlImportHdl(); pEdit->SetHtmlImportHdl( LINK( this, ScHTMLLayoutParser, HTMLImportHdl ) ); - ScDocShell* pObjSh = mpDoc->GetDocumentShell(); + ScDocShell* pObjSh = mrDoc.GetDocumentShell(); bool bLoading = pObjSh && pObjSh->IsLoading(); SvKeyValueIteratorRef xValues; @@ -537,7 +537,7 @@ void ScHTMLLayoutParser::ModifyOffset( ScHTMLColOffset* pOffset, sal_uInt16& nOl void ScHTMLLayoutParser::SkipLocked( ScEEParseEntry* pE, bool bJoin ) { - if ( !mpDoc->ValidCol(pE->nCol) ) + if ( !mrDoc.ValidCol(pE->nCol) ) return; // Or else this would create a wrong value at ScAddress (chance for an infinite loop)! @@ -549,7 +549,7 @@ void ScHTMLLayoutParser::SkipLocked( ScEEParseEntry* pE, bool bJoin ) bool bFail = o3tl::checked_add<SCCOL>(pE->nCol, pE->nColOverlap - 1, nEndCol) || o3tl::checked_add<SCROW>(pE->nRow, pE->nRowOverlap - 1, nEndRow); - if (bFail || nEndRow > mpDoc->MaxRow()) + if (bFail || nEndRow > mrDoc.MaxRow()) { SAL_WARN("sc", "invalid range: " << pE->nCol << " " << pE->nColOverlap << " " << pE->nRow << " " << pE->nRowOverlap); @@ -568,7 +568,7 @@ void ScHTMLLayoutParser::SkipLocked( ScEEParseEntry* pE, bool bJoin ) SCCOL nTmp(0); bFail = o3tl::checked_add<SCCOL>(rR.aEnd.Col(), 1, pE->nCol) || o3tl::checked_add<SCCOL>(pE->nCol, pE->nRowOverlap - 1, nTmp); - if ( bFail || pE->nCol > mpDoc->MaxCol() || nTmp > mpDoc->MaxCol() ) + if ( bFail || pE->nCol > mrDoc.MaxCol() || nTmp > mrDoc.MaxCol() ) bBadCol = true; else { @@ -1069,7 +1069,7 @@ void ScHTMLLayoutParser::TableDataOn( HtmlImportInfo* pInfo ) case HtmlOptionId::COLSPAN: { sal_Int32 nColOverlap = rOption.GetString().toInt32(); - if (nColOverlap >= 0 && nColOverlap <= mpDoc->MaxCol()) + if (nColOverlap >= 0 && nColOverlap <= mrDoc.MaxCol()) mxActEntry->nColOverlap = static_cast<SCCOL>(nColOverlap); else SAL_WARN("sc", "ScHTMLLayoutParser::TableDataOn ignoring colspan: " << nColOverlap); @@ -1078,7 +1078,7 @@ void ScHTMLLayoutParser::TableDataOn( HtmlImportInfo* pInfo ) case HtmlOptionId::ROWSPAN: { sal_Int32 nRowOverlap = rOption.GetString().toInt32(); - if (nRowOverlap >= 0 && nRowOverlap <= mpDoc->MaxRow()) + if (nRowOverlap >= 0 && nRowOverlap <= mrDoc.MaxRow()) mxActEntry->nRowOverlap = static_cast<SCROW>(nRowOverlap); else SAL_WARN("sc", "ScHTMLLayoutParser::TableDataOn ignoring rowspan: " << nRowOverlap); @@ -1645,7 +1645,7 @@ void ScHTMLLayoutParser::ProcToken( HtmlImportInfo* pInfo ) switch ( pInfo->nToken ) { case HtmlTokenId::META: - if (ScDocShell* pDocSh = mpDoc->GetDocumentShell()) + if (ScDocShell* pDocSh = mrDoc.GetDocumentShell()) { HTMLParser* pParser = static_cast<HTMLParser*>(pInfo->pParser); uno::Reference<document::XDocumentPropertiesSupplier> xDPS( @@ -1663,7 +1663,7 @@ void ScHTMLLayoutParser::ProcToken( HtmlImportInfo* pInfo ) break; case HtmlTokenId::TITLE_OFF: { - ScDocShell* pDocSh = mpDoc->GetDocumentShell(); + ScDocShell* pDocSh = mrDoc.GetDocumentShell(); if ( bInTitle && !aString.isEmpty() && pDocSh ) { // Remove blanks from line breaks @@ -2432,10 +2432,9 @@ void ScHTMLTable::GetDocRange( ScRange& rRange ) const } } -void ScHTMLTable::ApplyCellBorders( ScDocument* pDoc, const ScAddress& rFirstPos ) const +void ScHTMLTable::ApplyCellBorders( ScDocument& rDoc, const ScAddress& rFirstPos ) const { - OSL_ENSURE( pDoc, "ScHTMLTable::ApplyCellBorders - no document" ); - if( pDoc && mbBorderOn ) + if( mbBorderOn ) { const SCCOL nLastCol = maSize.mnCols - 1; const SCROW nLastRow = maSize.mnRows - 1; @@ -2465,7 +2464,7 @@ void ScHTMLTable::ApplyCellBorders( ScDocument* pDoc, const ScAddress& rFirstPos { aBorderItem.SetLine( (nCellRow == nCellRow1) ? pTopLine : nullptr, SvxBoxItemLine::TOP ); aBorderItem.SetLine( (nCellRow == nCellRow2) ? pBottomLine : nullptr, SvxBoxItemLine::BOTTOM ); - pDoc->ApplyAttr( nCellCol, nCellRow, rFirstPos.Tab(), aBorderItem ); + rDoc.ApplyAttr( nCellCol, nCellRow, rFirstPos.Tab(), aBorderItem ); } } } @@ -2473,7 +2472,7 @@ void ScHTMLTable::ApplyCellBorders( ScDocument* pDoc, const ScAddress& rFirstPos } for( ScHTMLTableIterator aIter( mxNestedTables.get() ); aIter.is(); ++aIter ) - aIter->ApplyCellBorders( pDoc, rFirstPos ); + aIter->ApplyCellBorders( rDoc, rFirstPos ); } SvNumberFormatter* ScHTMLTable::GetFormatTable() @@ -2964,13 +2963,13 @@ void ScHTMLGlobalTable::Recalc() RecalcDocPos( GetDocPos() ); } -e ... etc. - the rest is truncated