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

Yogesh Desai er.yogeshdesai at gmail.com
Wed Jan 20 09:10:59 PST 2016


 sc/source/ui/view/output2.cxx |   28 +++++++++++++++++++++-------
 1 file changed, 21 insertions(+), 7 deletions(-)

New commits:
commit 812ebe795219966a05baca5719b528c186a0baf6
Author: Yogesh Desai <er.yogeshdesai at gmail.com>
Date:   Tue Jan 5 21:26:47 2016 +0530

    tdf#96822 : Make cell contents left align when number formatting is text
    
    Change-Id: I9754db93f4cf71a6001d5b3f39ee2bc2b01889cc
    Reviewed-on: https://gerrit.libreoffice.org/21134
    Reviewed-by: Eike Rathke <erack at redhat.com>
    Tested-by: Eike Rathke <erack at redhat.com>

diff --git a/sc/source/ui/view/output2.cxx b/sc/source/ui/view/output2.cxx
index 39577bb..3021961 100644
--- a/sc/source/ui/view/output2.cxx
+++ b/sc/source/ui/view/output2.cxx
@@ -278,6 +278,14 @@ bool lcl_GetBoolValue(const ScPatternAttr& rPattern, sal_uInt16 nWhich, const Sf
 
 }
 
+bool lcl_isNumberFormatText(const ScDocument* pDoc, SCCOL nCellX, SCROW nCellY, SCTAB nTab )
+{
+    sal_uInt32 nCurrentNumberFormat;
+    pDoc->GetNumberFormat( nCellX, nCellY, nTab, nCurrentNumberFormat);
+    SvNumberFormatter* pNumberFormatter = pDoc->GetFormatTable();
+    return(pNumberFormatter->GetType( nCurrentNumberFormat ) == css::util::NumberFormat::TEXT);
+}
+
 void ScDrawStringsVars::SetPattern(
     const ScPatternAttr* pNew, const SfxItemSet* pSet, const ScRefCellValue& rCell,
     SvtScriptType nScript )
@@ -1391,7 +1399,7 @@ bool beginsWithRTLCharacter(const OUString& rStr)
 static SvxCellHorJustify getAlignmentFromContext( SvxCellHorJustify eInHorJust,
         bool bCellIsValue, const OUString& rText,
         const ScPatternAttr& rPattern, const SfxItemSet* pCondSet,
-        const ScDocument* pDoc, SCTAB nTab )
+        const ScDocument* pDoc, SCTAB nTab, const bool  bNumberFormatIsText )
 {
     SvxCellHorJustify eHorJustContext = eInHorJust;
     bool bUseWritingDirection = false;
@@ -1399,10 +1407,14 @@ static SvxCellHorJustify getAlignmentFromContext( SvxCellHorJustify eInHorJust,
     {
         // fdo#32530: Default alignment depends on value vs
         // string, and the direction of the 1st letter.
-        if (beginsWithRTLCharacter( rText))
-            eHorJustContext = bCellIsValue ? SVX_HOR_JUSTIFY_LEFT : SVX_HOR_JUSTIFY_RIGHT;
-        else if (bCellIsValue)
-            eHorJustContext = SVX_HOR_JUSTIFY_RIGHT;
+        if (beginsWithRTLCharacter( rText)) //If language is RTL
+        {
+            if (bCellIsValue)
+               eHorJustContext = bNumberFormatIsText ? SVX_HOR_JUSTIFY_RIGHT : SVX_HOR_JUSTIFY_LEFT;
+            else
+                eHorJustContext = SVX_HOR_JUSTIFY_RIGHT;
+        }else if (bCellIsValue) //If language is not RTL
+            eHorJustContext = bNumberFormatIsText ? SVX_HOR_JUSTIFY_LEFT : SVX_HOR_JUSTIFY_RIGHT;
         else
             bUseWritingDirection = true;
     }
@@ -1693,8 +1705,9 @@ Rectangle ScOutputData::LayoutStrings(bool bPixelToLogic, bool bPaint, const ScA
                         bCellIsValue = pFCell->IsRunning() || pFCell->IsValue();
                     }
 
+                    const bool bNumberFormatIsText = lcl_isNumberFormatText( mpDoc, nCellX, nCellY, nTab );
                     eOutHorJust = getAlignmentFromContext( aVars.GetHorJust(), bCellIsValue, aVars.GetString(),
-                            *pPattern, pCondSet, mpDoc, nTab);
+                            *pPattern, pCondSet, mpDoc, nTab, bNumberFormatIsText );
 
                     bool bBreak = ( aVars.GetLineBreak() || aVars.GetHorJust() == SVX_HOR_JUSTIFY_BLOCK );
                     // #i111387# #o11817313# disable automatic line breaks only for "General" number format
@@ -4571,8 +4584,9 @@ void ScOutputData::DrawEdit(bool bPixelToLogic)
                         OUString aStr = mpDoc->GetString(nCellX, nCellY, nTab);
 
                         DrawEditParam aParam(pPattern, pCondSet, lcl_SafeIsValue(aCell));
+                        const bool bNumberFormatIsText = lcl_isNumberFormatText( mpDoc, nCellX, nCellY, nTab );
                         aParam.meHorJustContext = getAlignmentFromContext( aParam.meHorJustAttr,
-                                aParam.mbCellIsValue, aStr, *pPattern, pCondSet, mpDoc, nTab);
+                                aParam.mbCellIsValue, aStr, *pPattern, pCondSet, mpDoc, nTab, bNumberFormatIsText);
                         aParam.meHorJustResult = (aParam.meHorJustAttr == SVX_HOR_JUSTIFY_BLOCK) ?
                                 SVX_HOR_JUSTIFY_BLOCK : aParam.meHorJustContext;
                         aParam.mbPixelToLogic = bPixelToLogic;


More information about the Libreoffice-commits mailing list