[Libreoffice-commits] core.git: sc/source

Eike Rathke erack at redhat.com
Mon Aug 10 12:08:31 PDT 2015


 sc/source/ui/view/output2.cxx |   52 ++++++++++++++++++++++++------------------
 1 file changed, 30 insertions(+), 22 deletions(-)

New commits:
commit 2a06a052b920f696a794c2fb847fce63038220e9
Author: Eike Rathke <erack at redhat.com>
Date:   Mon Aug 10 21:03:28 2015 +0200

    Resolves: tdf#86024 do not attempt to shorten numeric value output
    
    Regression of 087a79db1272858f107656c5ca3c6efb45680986
    
    Change-Id: I903e05234882c79e6da6499cb17e16fd7226f91c

diff --git a/sc/source/ui/view/output2.cxx b/sc/source/ui/view/output2.cxx
index 5f43c75..cd63e9d 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);
+                                    }
                                 }
                             }
 


More information about the Libreoffice-commits mailing list