diff options
author | Ivan Timofeev <timofeev.i.s@gmail.com> | 2013-06-24 22:55:55 +0400 |
---|---|---|
committer | Abdulaziz A Alayed <aalayed@kacst.edu.sa> | 2013-07-03 23:11:32 +0000 |
commit | 6d16423a82847c82f6915f03cdd0179c42d23929 (patch) | |
tree | 8aaad7393da53bc950b18c95131288f9b91be0a0 | |
parent | 076bc3ce70b9254e00547de34a86dafd76ed1e51 (diff) |
fdo#66335: fix fdo#44582 and fdo#63254 differently
This combines the following cherry picked commits:
1) fdo#66335: gtk: Revert hacks for RTL scrollbars
returning false here in getNativeControlRegion results in a fallback to
square buttons in vcl scrollbar code. But there is no problem in gtk+ backend
in this case, let's fix the problem differently.
This reverts commits 898a3e84807bccbb876e3f5583728f6d24e05e9a and
e8e82bd2109b82ddd535cdac30303249c6b62942.
(cherry picked from commit 48e1d9c7afe5c2a39d9a08d7a38f7c8ff39d8c84)
2) fdo#44582: fix scrollbars in RTL UI
(cherry picked from commit e3a801e2454eed2e61202bbacca01fe3fcc20c1d)
3) fdo#63254: correct re-mirroring formula
This patch fixes horizontal scrollbar in Calc when a sheet is RTL and UI is LTR.
When a particular window (horizontal scrollbar in this case) is RTL and a whole
UI is LTR this code used for mirroring and re-mirroring back coordinates. AFAICS
mirroring is correct, but re-mirroring is not.
The used formula comes from commit 69b684b12e42bf1396bdffca88ca880ac3c2e00b, and
the same formula appears in the other variant of overloaded function "mirror":
mirror(sal_uInt32, const SalPoint*, SalPoint*, const OutputDevice*, bool),
but it does not affect the bug.
(cherry picked from commit a08f579e3704fbd97590f9b050d250ae445725a7)
Change-Id: If23ae46f1286048808faf878953dfa65e67d1962
Reviewed-on: https://gerrit.libreoffice.org/4621
Reviewed-by: Bosdonnat Cedric <cedric.bosdonnat@free.fr>
Tested-by: Bosdonnat Cedric <cedric.bosdonnat@free.fr>
Reviewed-by: Abdulaziz A Alayed <aalayed@kacst.edu.sa>
Tested-by: Abdulaziz A Alayed <aalayed@kacst.edu.sa>
-rw-r--r-- | vcl/source/control/scrbar.cxx | 4 | ||||
-rw-r--r-- | vcl/source/gdi/salgdilayout.cxx | 4 | ||||
-rwxr-xr-x | vcl/unx/gtk/gdi/salnativewidgets-gtk.cxx | 8 |
3 files changed, 5 insertions, 11 deletions
diff --git a/vcl/source/control/scrbar.cxx b/vcl/source/control/scrbar.cxx index b32691500806..d283daf0eb1c 100644 --- a/vcl/source/control/scrbar.cxx +++ b/vcl/source/control/scrbar.cxx @@ -317,9 +317,9 @@ void ScrollBar::ImplCalc( sal_Bool bUpdate ) if ( GetStyle() & WB_HORZ ) { - if ( GetNativeControlRegion( CTRL_SCROLLBAR, PART_BUTTON_LEFT, + if ( GetNativeControlRegion( CTRL_SCROLLBAR, IsRTLEnabled()? PART_BUTTON_RIGHT: PART_BUTTON_LEFT, aControlRegion, 0, ImplControlValue(), OUString(), aBoundingRegion, aBtn1Region ) && - GetNativeControlRegion( CTRL_SCROLLBAR, PART_BUTTON_RIGHT, + GetNativeControlRegion( CTRL_SCROLLBAR, IsRTLEnabled()? PART_BUTTON_LEFT: PART_BUTTON_RIGHT, aControlRegion, 0, ImplControlValue(), OUString(), aBoundingRegion, aBtn2Region ) ) { maBtn1Rect = aBtn1Region; diff --git a/vcl/source/gdi/salgdilayout.cxx b/vcl/source/gdi/salgdilayout.cxx index 01137b635ae2..f8c3d1cc0bfe 100644 --- a/vcl/source/gdi/salgdilayout.cxx +++ b/vcl/source/gdi/salgdilayout.cxx @@ -107,7 +107,7 @@ void SalGraphics::mirror( long& x, const OutputDevice *pOutDev, bool bBack ) con { long devX = pOutDevRef->GetOutOffXPixel(); // re-mirrored mnOutOffX if( bBack ) - x = x - pOutDevRef->GetOutputWidthPixel() + devX - pOutDevRef->GetOutOffXPixel() + 1; + x = devX + (pOutDevRef->GetOutputWidthPixel() + devX) - (x + 1); else x = pOutDevRef->GetOutputWidthPixel() - (x - devX) + pOutDevRef->GetOutOffXPixel() - 1; } @@ -143,7 +143,7 @@ void SalGraphics::mirror( long& x, long& nWidth, const OutputDevice *pOutDev, bo { long devX = pOutDevRef->GetOutOffXPixel(); // re-mirrored mnOutOffX if( bBack ) - x = x - pOutDevRef->GetOutputWidthPixel() + devX - pOutDevRef->GetOutOffXPixel() + nWidth; + x = devX + (pOutDevRef->GetOutputWidthPixel() + devX) - (x + nWidth); else x = pOutDevRef->GetOutputWidthPixel() - (x - devX) + pOutDevRef->GetOutOffXPixel() - nWidth; } diff --git a/vcl/unx/gtk/gdi/salnativewidgets-gtk.cxx b/vcl/unx/gtk/gdi/salnativewidgets-gtk.cxx index 370a406cafdd..d8c645aaffec 100755 --- a/vcl/unx/gtk/gdi/salnativewidgets-gtk.cxx +++ b/vcl/unx/gtk/gdi/salnativewidgets-gtk.cxx @@ -1048,13 +1048,7 @@ sal_Bool GtkSalGraphics::getNativeControlRegion( ControlType nType, rNativeContentRegion.Right() = rNativeContentRegion.Left() + 1; if (!rNativeContentRegion.GetHeight()) rNativeContentRegion.Bottom() = rNativeContentRegion.Top() + 1; - //fdo#63254 horizontal scrool bar isn't displayed in RTL tab - // with LTR UI in calc - returnVal =Application::GetSettings().GetLayoutRTL(); - - //See fdo#44582, Horizontal scrollbar in navigator window is broken - if ((nPart==PART_BUTTON_LEFT || nPart==PART_BUTTON_RIGHT) && Application::GetSettings().GetLayoutRTL()) - returnVal = false; + returnVal = sal_True; } if( (nType == CTRL_MENUBAR) && (nPart == PART_ENTIRE_CONTROL) ) { |