sc/source/ui/view/viewfunc.cxx | 26 ++++++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-)
New commits: commit c967cebeab0d5b343bd33d3a6f758aeaa40258f8 Author: Eike Rathke <er...@redhat.com> Date: Mon Jul 17 11:36:29 2017 +0200 Resolves: tdf#75650 reset boolean number format to General for new formula Change-Id: Iec2feefcbb5a92c64f182d93b4055fc009dbe1e5 (cherry picked from commit 1c1783864a356a4394f80dec28db939f4cf572cd) Reviewed-on: https://gerrit.libreoffice.org/40053 Tested-by: Jenkins <c...@libreoffice.org> Reviewed-by: Markus Mohrhard <markus.mohrh...@googlemail.com> diff --git a/sc/source/ui/view/viewfunc.cxx b/sc/source/ui/view/viewfunc.cxx index 1b5a9b210849..de4f1b23cc58 100644 --- a/sc/source/ui/view/viewfunc.cxx +++ b/sc/source/ui/view/viewfunc.cxx @@ -507,10 +507,11 @@ void ScViewFunc::EnterData( SCCOL nCol, SCROW nRow, SCTAB nTab, { i = *itr; aPos.SetTab( i ); - sal_uLong nIndex = (sal_uLong) static_cast<const SfxUInt32Item*>( pDoc->GetAttr( - nCol, nRow, i, ATTR_VALUE_FORMAT ))->GetValue(); - if ( pFormatter->GetType( nIndex ) == css::util::NumberFormat::TEXT || - ( ( rString[0] == '+' || rString[0] == '-' ) && nError != FormulaError::NONE && rString == aFormula ) ) + const sal_uInt32 nIndex = static_cast<const SfxUInt32Item*>( pDoc->GetAttr( + nCol, nRow, i, ATTR_VALUE_FORMAT ))->GetValue(); + const sal_Int16 nType = pFormatter->GetType( nIndex); + if (nType == css::util::NumberFormat::TEXT || + ((rString[0] == '+' || rString[0] == '-') && nError != FormulaError::NONE && rString == aFormula)) { if ( pData ) { @@ -530,6 +531,23 @@ void ScViewFunc::EnterData( SCCOL nCol, SCROW nRow, SCTAB nTab, if(pCell->GetCode()->IsHyperLink()) pCell->GetCode()->SetHyperLink(false); } + if (nType == css::util::NumberFormat::LOGICAL) + { + // Reset to General so the actual format can be determined + // after the cell has been interpreted. A sticky boolean + // number format is highly likely unwanted.. see tdf#75650. + // General of same locale as current number format. + const SvNumberformat* pEntry = pFormatter->GetEntry( nIndex); + const LanguageType nLang = (pEntry ? pEntry->GetLanguage() : ScGlobal::eLnge); + const sal_uInt32 nFormat = pFormatter->GetStandardFormat( css::util::NumberFormat::NUMBER, nLang); + ScPatternAttr aPattern( pDoc->GetPool()); + aPattern.GetItemSet().Put( SfxUInt32Item( ATTR_VALUE_FORMAT, nFormat)); + ScMarkData aMark; + aMark.SelectTable( i, true); + aMark.SetMarkArea( ScRange( ScAddress( nCol, nRow, i))); + rFunc.ApplyAttributes( aMark, aPattern, false); + bNumFmtChanged = true; + } rFunc.SetFormulaCell(aPos, pCell, true); } } _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits