Related: tdf#120190 Factor out ScDocument::CreateSharedStringTextObject()
Change-Id: I51c1244406e30f5a3893eac42aed65fc92ab1d38
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/143805
Reviewed-by: Eike Rathke <erack@redhat.com>
Tested-by: Jenkins
diff --git a/sc/inc/document.hxx b/sc/inc/document.hxx
index cd7e08b..20e42a9 100644
--- a/sc/inc/document.hxx
+++ b/sc/inc/document.hxx
@@ -2510,6 +2510,8 @@ public:
SC_DLLPUBLIC ScFieldEditEngine& GetEditEngine();
SC_DLLPUBLIC ScNoteEditEngine& GetNoteEngine();
std::unique_ptr<EditTextObject> CreateSharedStringTextObject( const svl::SharedString& rSS );
std::unique_ptr<ScRefreshTimerControl> const & GetRefreshTimerControlAddress() const
{ return pRefreshTimerControl; }
diff --git a/sc/source/core/data/clipcontext.cxx b/sc/source/core/data/clipcontext.cxx
index ee97d31..d291c7c 100644
--- a/sc/source/core/data/clipcontext.cxx
+++ b/sc/source/core/data/clipcontext.cxx
@@ -253,12 +253,8 @@ void CopyFromClipContext::setSingleCell( const ScAddress& rSrcPos, const ScColum
// Turn this into a string or edit cell.
if (rSrcCell.getFormula()->IsMultilineResult())
{
// TODO : Add shared string support to the edit engine to
// make this process simpler.
ScFieldEditEngine& rEngine = mrDestDoc.GetEditEngine();
rEngine.SetTextCurrentDefaults(rSrcCell.getFormula()->GetString().getString());
std::unique_ptr<EditTextObject> pObj(rEngine.CreateTextObject());
pObj->NormalizeString(mrDestDoc.GetSharedStringPool());
std::unique_ptr<EditTextObject> pObj(mrDestDoc.CreateSharedStringTextObject(
rSrcCell.getFormula()->GetString()));
rSrcCell.set(*pObj);
}
else
diff --git a/sc/source/core/data/column4.cxx b/sc/source/core/data/column4.cxx
index 83123df..0de5def 100644
--- a/sc/source/core/data/column4.cxx
+++ b/sc/source/core/data/column4.cxx
@@ -501,10 +501,7 @@ public:
case sc::FormulaResultValue::String:
if (aRes.mbMultiLine)
{
ScFieldEditEngine& rEngine = mrDoc.GetEditEngine();
rEngine.SetTextCurrentDefaults(aRes.maString.getString());
std::unique_ptr<EditTextObject> pObj(rEngine.CreateTextObject());
pObj->NormalizeString(mrDoc.GetSharedStringPool());
std::unique_ptr<EditTextObject> pObj(mrDoc.CreateSharedStringTextObject(aRes.maString));
maResValues.setValue(nRow, std::move(pObj));
}
else
diff --git a/sc/source/core/data/documen2.cxx b/sc/source/core/data/documen2.cxx
index af4629d..e21da4b 100644
--- a/sc/source/core/data/documen2.cxx
+++ b/sc/source/core/data/documen2.cxx
@@ -511,6 +511,17 @@ ScNoteEditEngine& ScDocument::GetNoteEngine()
return *mpNoteEngine;
}
std::unique_ptr<EditTextObject> ScDocument::CreateSharedStringTextObject( const svl::SharedString& rSS )
{
/* TODO: Add shared string support to the edit engine to make this process
* simpler. */
ScFieldEditEngine& rEngine = GetEditEngine();
rEngine.SetTextCurrentDefaults( rSS.getString());
std::unique_ptr<EditTextObject> pObj( rEngine.CreateTextObject());
pObj->NormalizeString( GetSharedStringPool());
return pObj;
}
void ScDocument::ResetClip( ScDocument* pSourceDoc, const ScMarkData* pMarks )
{
if (bIsClip)