[Libreoffice-commits] core.git: Branch 'libreoffice-4-2' - include/svx svx/source

Faisal M. Al-Otaibi fmalotaibi at kacst.edu.sa
Mon Feb 24 07:46:50 PST 2014


 include/svx/dlgctrl.hxx       |    2 +-
 svx/source/dialog/dlgctrl.cxx |   27 +++++++++++++++------------
 2 files changed, 16 insertions(+), 13 deletions(-)

New commits:
commit 1027e2be99f133ea30e5b81bf65b1c301a0a5866
Author: Faisal M. Al-Otaibi <fmalotaibi at kacst.edu.sa>
Date:   Mon Feb 24 10:35:36 2014 +0300

    fdo#74751: fix reverse base point diagram on RTL UI
    
    Change-Id: Ib8e9f40b5576116f0220ffa70390f95b28c8bae0
    Reviewed-on: https://gerrit.libreoffice.org/8200
    Reviewed-by: Caolán McNamara <caolanm at redhat.com>
    Tested-by: Caolán McNamara <caolanm at redhat.com>

diff --git a/include/svx/dlgctrl.hxx b/include/svx/dlgctrl.hxx
index 6cca020..b6434b7 100644
--- a/include/svx/dlgctrl.hxx
+++ b/include/svx/dlgctrl.hxx
@@ -88,7 +88,7 @@ protected:
 
     sal_Bool                        mbCompleteDisable;
 
-    RECT_POINT          GetRPFromPoint( Point ) const;
+    RECT_POINT          GetRPFromPoint( Point, bool bRTL = false ) const;
     Point               GetPointFromRP( RECT_POINT ) const;
     void                SetFocusRect( const Rectangle* pRect = NULL );      // pRect == NULL -> calculate rectangle in method
     Point               SetActualRPWithoutInvalidate( RECT_POINT eNewRP );  // returns the last point
diff --git a/svx/source/dialog/dlgctrl.cxx b/svx/source/dialog/dlgctrl.cxx
index 330a9c9..61f6bd1 100644
--- a/svx/source/dialog/dlgctrl.cxx
+++ b/svx/source/dialog/dlgctrl.cxx
@@ -571,7 +571,9 @@ Point SvxRectCtl::SetActualRPWithoutInvalidate( RECT_POINT eNewRP )
     if( (m_nState & CS_NOVERT) != 0 )
         aPtNew.Y() = aPtMM.Y();
 
-    eNewRP = GetRPFromPoint( aPtNew );
+    // fdo#74751 this fix reverse base point on RTL UI.
+    bool bRTL = Application::GetSettings().GetLayoutRTL();
+    eNewRP = GetRPFromPoint( aPtNew, bRTL );
 
     eDefRP = eNewRP;
     eRP = eNewRP;
@@ -627,19 +629,20 @@ Point SvxRectCtl::GetApproxLogPtFromPixPt( const Point& rPt ) const
 
 // Converts Point in RECT_POINT
 
-RECT_POINT SvxRectCtl::GetRPFromPoint( Point aPt ) const
+RECT_POINT SvxRectCtl::GetRPFromPoint( Point aPt, bool bRTL ) const
 {
-    if     ( aPt == aPtLT) return RP_LT;
-    else if( aPt == aPtMT) return RP_MT;
-    else if( aPt == aPtRT) return RP_RT;
-    else if( aPt == aPtLM) return RP_LM;
-    else if( aPt == aPtRM) return RP_RM;
-    else if( aPt == aPtLB) return RP_LB;
-    else if( aPt == aPtMB) return RP_MB;
-    else if( aPt == aPtRB) return RP_RB;
+    RECT_POINT rPoint = RP_MM;  // default
 
-    else
-        return RP_MM; // default
+    if     ( aPt == aPtLT) rPoint = bRTL ? RP_RT : RP_LT;
+    else if( aPt == aPtMT) rPoint = RP_MT;
+    else if( aPt == aPtRT) rPoint = bRTL ? RP_LT : RP_RT;
+    else if( aPt == aPtLM) rPoint = bRTL ? RP_RM : RP_LM;
+    else if( aPt == aPtRM) rPoint = bRTL ? RP_LM : RP_RM;
+    else if( aPt == aPtLB) rPoint = bRTL ? RP_RB : RP_LB;
+    else if( aPt == aPtMB) rPoint = RP_MB;
+    else if( aPt == aPtRB) rPoint = bRTL ? RP_LB : RP_RB;
+
+    return rPoint;
 }
 
 // Resets to the original state of the control


More information about the Libreoffice-commits mailing list