diff options
author | Eike Rathke <erack@redhat.com> | 2015-08-10 21:03:28 +0200 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2015-08-11 13:27:49 +0000 |
commit | de44c2459b85a2a804155fb38b9b30c713789c3d (patch) | |
tree | 498f0d8ca81c786faf4d55f073c7a2bd7f23f5a2 /sc | |
parent | ed09c7638e3ea40fc40b51af5cf0b2018c5c78c9 (diff) |
Resolves: tdf#86024 do not attempt to shorten numeric value output
Regression of 087a79db1272858f107656c5ca3c6efb45680986
Change-Id: I903e05234882c79e6da6499cb17e16fd7226f91c
(cherry picked from commit 2a06a052b920f696a794c2fb847fce63038220e9)
Reviewed-on: https://gerrit.libreoffice.org/17636
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Tested-by: Caolán McNamara <caolanm@redhat.com>
Diffstat (limited to 'sc')
-rw-r--r-- | sc/source/ui/view/output2.cxx | 52 |
1 files changed, 30 insertions, 22 deletions
diff --git a/sc/source/ui/view/output2.cxx b/sc/source/ui/view/output2.cxx index 5f43c75e9101..cd63e9dc3a85 100644 --- a/sc/source/ui/view/output2.cxx +++ b/sc/source/ui/view/output2.cxx @@ -2017,32 +2017,40 @@ Rectangle ScOutputData::LayoutStrings(bool bPixelToLogic, bool bPaint, const ScA OUString aShort = aString; - double fVisibleRatio = 1.0; - double fTextWidth = aVars.GetTextSize().Width(); - sal_Int32 nTextLen = aString.getLength(); - if (eOutHorJust == SVX_HOR_JUSTIFY_LEFT && aAreaParam.mnRightClipLength > 0) + // But never fiddle with numeric values. + // (Which was the cause of tdf#86024). + // The General automatic format output takes + // care of this, or fixed width numbers either fit + // or display as ###. + if (!bCellIsValue) { - fVisibleRatio = (fTextWidth - aAreaParam.mnRightClipLength) / fTextWidth; - if (0.0 < fVisibleRatio && fVisibleRatio < 1.0) + double fVisibleRatio = 1.0; + double fTextWidth = aVars.GetTextSize().Width(); + sal_Int32 nTextLen = aString.getLength(); + if (eOutHorJust == SVX_HOR_JUSTIFY_LEFT && aAreaParam.mnRightClipLength > 0) { - // Only show the left-end segment. - sal_Int32 nShortLen = fVisibleRatio*nTextLen + 1; - aShort = aShort.copy(0, nShortLen); + fVisibleRatio = (fTextWidth - aAreaParam.mnRightClipLength) / fTextWidth; + if (0.0 < fVisibleRatio && fVisibleRatio < 1.0) + { + // Only show the left-end segment. + sal_Int32 nShortLen = fVisibleRatio*nTextLen + 1; + aShort = aShort.copy(0, nShortLen); + } } - } - else if (eOutHorJust == SVX_HOR_JUSTIFY_RIGHT && aAreaParam.mnLeftClipLength > 0) - { - fVisibleRatio = (fTextWidth - aAreaParam.mnLeftClipLength) / fTextWidth; - if (0.0 < fVisibleRatio && fVisibleRatio < 1.0) + else if (eOutHorJust == SVX_HOR_JUSTIFY_RIGHT && aAreaParam.mnLeftClipLength > 0) { - // Only show the right-end segment. - sal_Int32 nShortLen = fVisibleRatio*nTextLen + 1; - aShort = aShort.copy(nTextLen-nShortLen); - - // Adjust the text position after shortening of the string. - double fShortWidth = pFmtDevice->GetTextWidth(aShort); - double fOffset = fTextWidth - fShortWidth; - aDrawTextPos.Move(fOffset, 0); + fVisibleRatio = (fTextWidth - aAreaParam.mnLeftClipLength) / fTextWidth; + if (0.0 < fVisibleRatio && fVisibleRatio < 1.0) + { + // Only show the right-end segment. + sal_Int32 nShortLen = fVisibleRatio*nTextLen + 1; + aShort = aShort.copy(nTextLen-nShortLen); + + // Adjust the text position after shortening of the string. + double fShortWidth = pFmtDevice->GetTextWidth(aShort); + double fOffset = fTextWidth - fShortWidth; + aDrawTextPos.Move(fOffset, 0); + } } } |