Date: prev next · Thread: first prev next last
2013 Archives by date, by thread · List index


Hi,

I have submitted a patch for review:

    https://gerrit.libreoffice.org/3187

To pull it, you can do:

    git pull ssh://gerrit.libreoffice.org:29418/core refs/changes/87/3187/1

fdo#32082: Do not reset number format in table cells on edit.

When we changed the default to _not_ to recognize the number formats in table
cells (commit 334c34e4ec803c65e43abf20edbc6faf7fa95e76), it caused that any
edit of a number formatted cell had reset it to text on edit.

This was quite unexpected, because when eg. there was a number that contributed
to a sum, and it changed to text, the sum changed as if there was a '0' there.

To solve this, try hard to retain the number format regardless of the
'Recognize Number Formats' setting when there was a number formatting assigned
to the cell.

Change-Id: Ib43e0877420d90cdac7a0357d1ef3a549c866fb7
---
M sw/source/core/docnode/ndtbl.cxx
1 file changed, 21 insertions(+), 17 deletions(-)



diff --git a/sw/source/core/docnode/ndtbl.cxx b/sw/source/core/docnode/ndtbl.cxx
index 08b710a..df85ebc 100644
--- a/sw/source/core/docnode/ndtbl.cxx
+++ b/sw/source/core/docnode/ndtbl.cxx
@@ -4022,31 +4022,35 @@
             SwTableBoxFmt* pBoxFmt = (SwTableBoxFmt*)rBox.GetFrmFmt();
             SfxItemSet aBoxSet( GetAttrPool(), RES_BOXATR_FORMAT, RES_BOXATR_VALUE );
 
-            sal_Bool bSetNumFmt = IsInsTblFormatNum();
             sal_Bool bLockModify = sal_True;
+            sal_Bool bSetNumFmt = sal_False;
+            const bool bForceNumberFormat = IsInsTblFormatNum() && IsInsTblChangeNumFormat();
 
-            if( bSetNumFmt && !IsInsTblChangeNumFormat() )
+            // if the user forced a number format in this cell previously,
+            // keep it, unless the user set that she wants the full number
+            // format recognition
+            if( pNumFmtItem && !bForceNumberFormat )
             {
-                if( !pNumFmtItem )
-                    bSetNumFmt = sal_False;
+                sal_uLong nOldNumFmt = ((SwTblBoxNumFormat*)pNumFmtItem)->GetValue();
+                SvNumberFormatter* pNumFmtr = GetNumberFormatter();
+
+                short nFmtType = pNumFmtr->GetType( nFmtIdx );
+                if( nFmtType == pNumFmtr->GetType( nOldNumFmt ) || NUMBERFORMAT_NUMBER == nFmtType 
)
+                {
+                    // Current and specified NumFormat match
+                    // -> keep old Format
+                    nFmtIdx = nOldNumFmt;
+                    bSetNumFmt = sal_True;
+                }
                 else
                 {
-                    sal_uLong nOldNumFmt = ((SwTblBoxNumFormat*)pNumFmtItem)->GetValue();
-                    SvNumberFormatter* pNumFmtr = GetNumberFormatter();
-
-                    short nFmtType = pNumFmtr->GetType( nFmtIdx );
-                    if( nFmtType == pNumFmtr->GetType( nOldNumFmt ) || NUMBERFORMAT_NUMBER == 
nFmtType )
-                        // Current and specified NumFormat match
-                        // -> keep old Format
-                        nFmtIdx = nOldNumFmt;
-                    else
-                        // Current and specified NumFormat do not match
-                        // -> insert as Text
-                        bLockModify = bSetNumFmt = sal_False;
+                    // Current and specified NumFormat do not match
+                    // -> insert as Text
+                    bLockModify = bSetNumFmt = sal_False;
                 }
             }
 
-            if( bSetNumFmt )
+            if( bSetNumFmt || bForceNumberFormat )
             {
                 pBoxFmt = (SwTableBoxFmt*)rBox.ClaimFrmFmt();
 

-- 
To view, visit https://gerrit.libreoffice.org/3187
To unsubscribe, visit https://gerrit.libreoffice.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ib43e0877420d90cdac7a0357d1ef3a549c866fb7
Gerrit-PatchSet: 1
Gerrit-Project: core
Gerrit-Branch: libreoffice-4-0
Gerrit-Owner: Jan Holesovsky <kendy@suse.cz>


Context


Privacy Policy | Impressum (Legal Info) | Copyright information: Unless otherwise specified, all text and images on this website are licensed under the Creative Commons Attribution-Share Alike 3.0 License. This does not include the source code of LibreOffice, which is licensed under the Mozilla Public License (MPLv2). "LibreOffice" and "The Document Foundation" are registered trademarks of their corresponding registered owners or are in actual use as trademarks in one or more countries. Their respective logos and icons are also subject to international copyright laws. Use thereof is explained in our trademark policy.