sc/source/ui/view/output2.cxx |   27 ++++++++++++++++++++++++---
 1 file changed, 24 insertions(+), 3 deletions(-)

New commits:
commit c6d5433c673f592c3fda4270df66fff6c667d021
Author: Michael Stahl <mst...@redhat.com>
Date:   Mon Jan 13 13:27:30 2014 +0100

    Revert "fdo#32530 calc:alignment depend on 1st char direct"
    
    This reverts commit f08c1edc0a99e0c29fb1614162d3e88c5660e092.
    
    This commit causes sc_macros_test to fail with "Assertion
    `!"meHorJustResult does not match getAlignmentFromContext()"' failed."
    and Eike has expressed some doubts about it too so revert it for now.

diff --git a/sc/source/ui/view/output2.cxx b/sc/source/ui/view/output2.cxx
index 911cc11..9c09b5c 100644
--- a/sc/source/ui/view/output2.cxx
+++ b/sc/source/ui/view/output2.cxx
@@ -1405,9 +1405,12 @@ bool beginsWithRTLCharacter(const OUString& rStr)
     right alignment is returned.
  */
 static SvxCellHorJustify getAlignmentFromContext( SvxCellHorJustify eInHorJust,
-        bool bCellIsValue, const OUString& rText)
+        bool bCellIsValue, const OUString& rText,
+        const ScPatternAttr& rPattern, const SfxItemSet* pCondSet,
+        const ScDocument* pDoc, SCTAB nTab )
 {
     SvxCellHorJustify eHorJustContext = eInHorJust;
+    bool bUseWritingDirection = false;
     if (eInHorJust == SVX_HOR_JUSTIFY_STANDARD)
     {
         // fdo#32530: Default alignment depends on value vs
@@ -1416,6 +1419,23 @@ static SvxCellHorJustify getAlignmentFromContext( 
SvxCellHorJustify eInHorJust,
             eHorJustContext = bCellIsValue ? SVX_HOR_JUSTIFY_LEFT : 
SVX_HOR_JUSTIFY_RIGHT;
         else if (bCellIsValue)
             eHorJustContext = SVX_HOR_JUSTIFY_RIGHT;
+        else
+            bUseWritingDirection = true;
+    }
+
+    if (bUseWritingDirection ||
+            eInHorJust == SVX_HOR_JUSTIFY_BLOCK || eInHorJust == 
SVX_HOR_JUSTIFY_REPEAT)
+    {
+        sal_uInt16 nDirection = lcl_GetValue<SvxFrameDirectionItem, 
sal_uInt16>( rPattern, ATTR_WRITINGDIR, pCondSet);
+        if (nDirection == FRMDIR_HORI_LEFT_TOP || nDirection == 
FRMDIR_VERT_TOP_LEFT)
+            eHorJustContext = SVX_HOR_JUSTIFY_LEFT;
+        else if (nDirection == FRMDIR_ENVIRONMENT)
+        {
+            SAL_WARN_IF( !pDoc, "sc.ui", "getAlignmentFromContext - 
pDoc==NULL");
+            eHorJustContext = (pDoc && pDoc->IsLayoutRTL(nTab)) ? 
SVX_HOR_JUSTIFY_RIGHT : SVX_HOR_JUSTIFY_LEFT;
+        }
+        else
+            eHorJustContext = SVX_HOR_JUSTIFY_RIGHT;
     }
     return eHorJustContext;
 }
@@ -1694,7 +1714,8 @@ void ScOutputData::DrawStrings( sal_Bool bPixelToLogic )
                         bCellIsValue = pFCell->IsRunning() || 
pFCell->IsValue();
                     }
 
-                    eOutHorJust = getAlignmentFromContext( aVars.GetHorJust(), 
bCellIsValue, aVars.GetString());
+                    eOutHorJust = getAlignmentFromContext( aVars.GetHorJust(), 
bCellIsValue, aVars.GetString(),
+                            *pPattern, pCondSet, mpDoc, nTab);
 
                     bool bBreak = ( aVars.GetLineBreak() || aVars.GetHorJust() 
== SVX_HOR_JUSTIFY_BLOCK );
                     // #i111387# #o11817313# disable automatic line breaks 
only for "General" number format
@@ -4623,7 +4644,7 @@ void ScOutputData::DrawEdit(sal_Bool bPixelToLogic)
 
                         DrawEditParam aParam(pPattern, pCondSet, 
lcl_SafeIsValue(aCell));
                         aParam.meHorJustContext = getAlignmentFromContext( 
aParam.meHorJustAttr,
-                                aParam.mbCellIsValue, aStr);
+                                aParam.mbCellIsValue, aStr, *pPattern, 
pCondSet, mpDoc, nTab);
                         aParam.meHorJustResult = (aParam.meHorJustAttr == 
SVX_HOR_JUSTIFY_BLOCK) ?
                                 SVX_HOR_JUSTIFY_BLOCK : 
aParam.meHorJustContext;
                         aParam.mbPixelToLogic = bPixelToLogic;
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to