sc/inc/stringutil.hxx | 6 ++++++ sc/source/core/data/column3.cxx | 12 ++++++++++-- sc/source/ui/undo/undocell.cxx | 2 ++ 3 files changed, 18 insertions(+), 2 deletions(-)
New commits: commit ba9833a1d63747eaa5124271a1ac51cb926bce7a Author: Eike Rathke <er...@redhat.com> Date: Tue Nov 21 15:24:56 2017 +0100 Keep number format on string cell content Undo, tdf#103234 follow-up Change-Id: I18c281211e6eeb4816da13972c360df85d577491 diff --git a/sc/inc/stringutil.hxx b/sc/inc/stringutil.hxx index e02c06bc392c..e44bdcc84e39 100644 --- a/sc/inc/stringutil.hxx +++ b/sc/inc/stringutil.hxx @@ -47,6 +47,12 @@ struct SAL_WARN_UNUSED SC_DLLPUBLIC ScSetStringParam SpecialNumberOnly, /** + * Keep an existing number format, do not set Text number format and do + * not set another number format. + */ + Keep, + + /** * Never set Text number format. */ Never diff --git a/sc/source/ui/undo/undocell.cxx b/sc/source/ui/undo/undocell.cxx index 129d2fc43191..5c10cd3282aa 100644 --- a/sc/source/ui/undo/undocell.cxx +++ b/sc/source/ui/undo/undocell.cxx @@ -457,6 +457,8 @@ void ScUndoSetCell::SetValue( const ScCellValue& rVal ) { ScSetStringParam aParam; aParam.setTextInput(); + // Undo only cell content, without setting any number format. + aParam.meSetTextNumFormat = ScSetStringParam::Keep; rDoc.SetString(maPos, rVal.mpString->getString(), &aParam); } break; commit f2f0a7c5a9d8185fedef5c737d1b7479b9fc0c1e Author: Eike Rathke <er...@redhat.com> Date: Tue Nov 21 14:55:04 2017 +0100 Invert logic of ScSetStringParam::* enum value checks, tdf#103234 follow-up In preparation for adding a new enum value to keep existing formatting in any case. Change-Id: Ic15a900adba0281d1267d95f821e1e898f80f566 diff --git a/sc/source/core/data/column3.cxx b/sc/source/core/data/column3.cxx index 9a5a57205436..7a4672978a68 100644 --- a/sc/source/core/data/column3.cxx +++ b/sc/source/core/data/column3.cxx @@ -1796,7 +1796,8 @@ bool ScColumn::ParseString( } } } - else if (aParam.meSetTextNumFormat != ScSetStringParam::Always) + else if (aParam.meSetTextNumFormat == ScSetStringParam::Never || + aParam.meSetTextNumFormat == ScSetStringParam::SpecialNumberOnly) { // Only check if the string is a regular number. const LocaleDataWrapper* pLocale = aParam.mpNumFormatter->GetLocaleData(); @@ -1824,7 +1825,14 @@ bool ScColumn::ParseString( if (rCell.meType == CELLTYPE_NONE) { - if (aParam.meSetTextNumFormat != ScSetStringParam::Never && aParam.mpNumFormatter->IsNumberFormat(rString, nIndex, nVal)) + // If we reach here with ScSetStringParam::SpecialNumberOnly it + // means a simple number was not detected above, so test for + // special numbers. In any case ScSetStringParam::Always does not + // mean always, but only always for content that could be any + // numeric. + if ((aParam.meSetTextNumFormat == ScSetStringParam::Always || + aParam.meSetTextNumFormat == ScSetStringParam::SpecialNumberOnly) && + aParam.mpNumFormatter->IsNumberFormat(rString, nIndex, nVal)) { // Set the cell format type to Text. applyTextNumFormat(*this, nRow, aParam.mpNumFormatter); _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits