Author: leiw
Date: Thu Jun 21 07:27:18 2012
New Revision: 1352432
URL: http://svn.apache.org/viewvc?rev=1352432&view=rev
Log:
#i119964 - Number displays different from MS with the same format code
Patch by: Zhang Lu
Review by: Wang Lei
Modified:
incubator/ooo/trunk/main/svl/inc/svl/zformat.hxx
incubator/ooo/trunk/main/svl/source/numbers/zformat.cxx
Modified: incubator/ooo/trunk/main/svl/inc/svl/zformat.hxx
URL:
http://svn.apache.org/viewvc/incubator/ooo/trunk/main/svl/inc/svl/zformat.hxx?rev=1352432&r1=1352431&r2=1352432&view=diff
==============================================================================
--- incubator/ooo/trunk/main/svl/inc/svl/zformat.hxx (original)
+++ incubator/ooo/trunk/main/svl/inc/svl/zformat.hxx Thu Jun 21 07:27:18 2012
@@ -313,6 +313,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
sal_Bool IsNegativeWithoutSign() const;
Modified: incubator/ooo/trunk/main/svl/source/numbers/zformat.cxx
URL:
http://svn.apache.org/viewvc/incubator/ooo/trunk/main/svl/source/numbers/zformat.cxx?rev=1352432&r1=1352431&r2=1352432&view=diff
==============================================================================
--- incubator/ooo/trunk/main/svl/source/numbers/zformat.cxx (original)
+++ incubator/ooo/trunk/main/svl/source/numbers/zformat.cxx Thu Jun 21 07:27:18
2012
@@ -2129,9 +2129,12 @@ sal_Bool SvNumberformat::GetOutputString
else
nIx = 2;
}
- if (nIx == 1 && fNumber < 0.0 && // negatives Format
- IsNegativeRealNegative() ) // ohne Vorzeichen
+ if (nIx == 1 && // negatives Format
+ IsNegativeRealNegative() && fNumber < 0.0) // ohne
Vorzeichen
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].GetnAnz();