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)