summaryrefslogtreecommitdiff
path: root/svl
diff options
context:
space:
mode:
authorWang Lei <leiw@apache.org>2012-06-21 06:27:18 +0000
committerEike Rathke <erack@redhat.com>2013-03-15 19:34:04 +0100
commit5c6dd7a8438f17f768c069f0bcc52d6420aa3e3e (patch)
tree49fa2b9ee16822004f44ae704a67aed9a0d0399a /svl
parent80fd82a6fbd2561d12a8f7d1aa82c435bf1e6aa4 (diff)
i#119964 - Number displays different from MS with the same format code
Patch by: Zhang Lu Review by: Wang Lei Conflicts: svl/source/numbers/zformat.cxx Change-Id: Id1ce742dc829a7aa8056e3be50e315ea4499ecc6
Diffstat (limited to 'svl')
-rw-r--r--svl/inc/svl/zformat.hxx12
-rw-r--r--svl/source/numbers/zformat.cxx3
2 files changed, 15 insertions, 0 deletions
diff --git a/svl/inc/svl/zformat.hxx b/svl/inc/svl/zformat.hxx
index ddb1535b7357..d4bbef714e9b 100644
--- a/svl/inc/svl/zformat.hxx
+++ b/svl/inc/svl/zformat.hxx
@@ -322,6 +322,18 @@ public:
(eOp1 == NUMBERFORMAT_OP_GT && eOp2 == NUMBERFORMAT_OP_LT) ||
(eOp1 == NUMBERFORMAT_OP_NO && eOp2 == NUMBERFORMAT_OP_NO) );
}
+ // Whether the first subformat code is really for negative numbers
+ // or another limit set.
+ sal_Bool IsNegativeRealNegative2() const
+ {
+ return fLimit1 == 0.0 && fLimit2 == 0.0 &&
+ ( (eOp2 == NUMBERFORMAT_OP_GT && eOp1 == NUMBERFORMAT_OP_LT) ||
+ (eOp2 == NUMBERFORMAT_OP_EQ && eOp1 == NUMBERFORMAT_OP_LT) ||
+ (eOp2 == NUMBERFORMAT_OP_GE && eOp1 == NUMBERFORMAT_OP_LT) ||
+ (eOp2 == NUMBERFORMAT_OP_NO && eOp1 == NUMBERFORMAT_OP_LT) ||
+ (eOp2 == NUMBERFORMAT_OP_NO && eOp1 == NUMBERFORMAT_OP_LE) ||
+ (eOp2 == NUMBERFORMAT_OP_GT && eOp1 == NUMBERFORMAT_OP_LE));
+ }
// Whether the negative format is without a sign or not
bool IsNegativeWithoutSign() const;
diff --git a/svl/source/numbers/zformat.cxx b/svl/source/numbers/zformat.cxx
index 45c1f29ae3e3..eca7005e2663 100644
--- a/svl/source/numbers/zformat.cxx
+++ b/svl/source/numbers/zformat.cxx
@@ -2526,6 +2526,9 @@ bool SvNumberformat::GetOutputString(double fNumber,
{
fNumber = -fNumber; // Vorzeichen eliminieren
}
+ if(nIx == 0 &&
+ IsNegativeRealNegative2() && fNumber < 0.0)
+ fNumber = -fNumber;
*ppColor = NumFor[nIx].GetColor();
const ImpSvNumberformatInfo& rInfo = NumFor[nIx].Info();
const sal_uInt16 nAnz = NumFor[nIx].GetCount();