[Libreoffice-commits] core.git: Branch 'libreoffice-5-3-5' - sc/source

Eike Rathke erack at redhat.com
Sun Jul 30 19:25:50 UTC 2017


 sc/source/ui/view/viewfunc.cxx |   26 ++++++++++++++++++++++----
 1 file changed, 22 insertions(+), 4 deletions(-)

New commits:
commit ff4399939b1719233676ff9cc10ee1470dc6b567
Author: Eike Rathke <erack at 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/40055
    Reviewed-by: Dennis Francis <dennis.francis at collabora.co.uk>
    Reviewed-by: Christian Lohmaier <lohmaier+LibreOffice at googlemail.com>
    Tested-by: Christian Lohmaier <lohmaier+LibreOffice at 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);
             }
         }


More information about the Libreoffice-commits mailing list