summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFaisal M. Al-Otaibi <fmalotaibi@kacst.edu.sa>2014-02-24 10:35:36 +0300
committerCaolán McNamara <caolanm@redhat.com>2014-02-24 15:46:24 +0000
commit1027e2be99f133ea30e5b81bf65b1c301a0a5866 (patch)
tree325c02d34f176c158bccc2c1f33d158a295dab5f
parentee09b4ed2b934eba6875688d778f4c4e9c14320b (diff)
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@redhat.com> Tested-by: Caolán McNamara <caolanm@redhat.com>
-rw-r--r--include/svx/dlgctrl.hxx2
-rw-r--r--svx/source/dialog/dlgctrl.cxx27
2 files changed, 16 insertions, 13 deletions
diff --git a/include/svx/dlgctrl.hxx b/include/svx/dlgctrl.hxx
index 6cca020c3e19..b6434b73c979 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 330a9c93d05f..61f6bd101fb3 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