summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndreas Heinisch <andreas.heinisch@yahoo.de>2021-12-28 19:55:29 +0100
committerXisco Fauli <xiscofauli@libreoffice.org>2022-01-12 18:33:16 +0100
commitb1e2d386afc3174d79a11fcfe365bf3a51f0caef (patch)
treeac97fc39112014db8bfc6d25a403107c8e51ea42
parenttdf#146703 Fix URL encoding when querying extensions (diff)
downloadcore-b1e2d386afc3174d79a11fcfe365bf3a51f0caef.tar.gz
core-b1e2d386afc3174d79a11fcfe365bf3a51f0caef.zip
tdf#146454 - Check for multiline string in setDataArray
Check for a multiline string in the setDataArray function. If that is the case, set a string or edit cell. Otherwise, just set a plain string in order to prevent performance issues due to the adjustments of the row height. Regression from b9e2c5d2a36fbd189c20448cadf4212edf02914d Change-Id: I9216b198b878fda5da29596d25504db853acd756 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/127660 Tested-by: Jenkins Reviewed-by: Andreas Heinisch <andreas.heinisch@yahoo.de> (cherry picked from commit 2d11710df6d81c03007d136667a443e09cc70eed) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/128332 Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
-rw-r--r--sc/source/ui/unoobj/cellsuno.cxx16
1 files changed, 14 insertions, 2 deletions
diff --git a/sc/source/ui/unoobj/cellsuno.cxx b/sc/source/ui/unoobj/cellsuno.cxx
index 9364a93139e1..622307974a75 100644
--- a/sc/source/ui/unoobj/cellsuno.cxx
+++ b/sc/source/ui/unoobj/cellsuno.cxx
@@ -1082,7 +1082,7 @@ static bool lcl_PutDataArray( ScDocShell& rDocShell, const ScRange& rRange,
const uno::Sequence< uno::Sequence<uno::Any> >& aData )
{
ScDocument& rDoc = rDocShell.GetDocument();
- ScDocFunc& rDocFunc = rDocShell.GetDocFunc();
+ ScFieldEditEngine& rEngine = rDoc.GetEditEngine();
SCTAB nTab = rRange.aStart.Tab();
SCCOL nStartCol = rRange.aStart.Col();
SCROW nStartRow = rRange.aStart.Row();
@@ -1159,7 +1159,19 @@ static bool lcl_PutDataArray( ScDocShell& rDocShell, const ScRange& rRange,
rElement >>= aUStr;
if ( !aUStr.isEmpty() )
{
- rDocFunc.SetStringOrEditCell(aPos, aUStr, false);
+ // tdf#146454 - check for a multiline string since setting an edit
+ // or string cell is in magnitudes slower than setting a plain string
+ if (ScStringUtil::isMultiline(aUStr))
+ {
+ rEngine.SetTextCurrentDefaults(aUStr);
+ rDoc.SetEditText(aPos, rEngine.CreateTextObject());
+ }
+ else
+ {
+ ScSetStringParam aParam;
+ aParam.setTextInput();
+ rDoc.SetString(aPos, aUStr, &aParam);
+ }
}
}
break;