[libreoffice] 01/01: backport GTK3 RTL fix
This is an automated email from the git hooks/post-receive script.
rene pushed a commit to branch master
in repository libreoffice.
commit 98fcafc690f10d78d14c4d805027e4b2a373db2a
Author: Rene Engelhard <rene@debian.org>
Date: Fri Aug 21 11:34:32 2015 +0200
backport GTK3 RTL fix
---
changelog | 3 ++
patches/gtk3-rtl.diff | 104 ++++++++++++++++++++++++++++++++++++++++++++++++++
patches/series | 1 +
3 files changed, 108 insertions(+)
diff --git a/changelog b/changelog
index edf93ce..bd358e9 100644
--- a/changelog
+++ b/changelog
@@ -1,5 +1,8 @@
libreoffice (1:5.0.1~rc1-3) UNRELEASED; urgency=medium
+ * debian/patches/gtk3-rtl.diff: backport GTk3 RTL fixes (arrows, checkboxes)
+ from libreoffice-5-0
+
* debian/rules:
- bump libmysqlcppconn-dev and libclucene-dev build-deps to their
gcc 5 versions
diff --git a/patches/gtk3-rtl.diff b/patches/gtk3-rtl.diff
new file mode 100644
index 0000000..3d9a72f
--- /dev/null
+++ b/patches/gtk3-rtl.diff
@@ -0,0 +1,104 @@
+From a803ec69f69068e0c45a7825094941b9ea765c1c Mon Sep 17 00:00:00 2001
+From: Khaled Hosny <khaledhosny@eglug.org>
+Date: Mon, 17 Aug 2015 00:49:39 +0200
+Subject: Fix GTK3 right-to-left rendering
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+* Reverse the direction of arrows e.g. in menus
+* Reverse the position of combobox button
+
+They are lumped together because fixing one breaks the other
+
+Change-Id: I65afb08785e67db72a72ad39f1de56db037b640a
+Reviewed-on: https://gerrit.libreoffice.org/17788
+Tested-by: Jenkins <ci@libreoffice.org>
+Reviewed-by: Norbert Thiebaud <nthiebaud@gmail.com>
+Reviewed-on: https://gerrit.libreoffice.org/17845
+Reviewed-by: Caolán McNamara <caolanm@redhat.com>
+Tested-by: Caolán McNamara <caolanm@redhat.com>
+
+diff --git a/vcl/unx/gtk3/gdi/gtk3salnativewidgets-gtk.cxx b/vcl/unx/gtk3/gdi/gtk3salnativewidgets-gtk.cxx
+index 126d6d1..1f04b2e 100644
+--- a/vcl/unx/gtk3/gdi/gtk3salnativewidgets-gtk.cxx
++++ b/vcl/unx/gtk3/gdi/gtk3salnativewidgets-gtk.cxx
+@@ -77,6 +77,11 @@ static void NWConvertVCLStateToGTKState( ControlState nVCLState,
+
+ if ( nVCLState & ControlState::FOCUSED )
+ *nGTKState = (GtkStateFlags) (*nGTKState | GTK_STATE_FLAG_FOCUSED);
++
++ if (AllSettings::GetLayoutRTL())
++ {
++ *nGTKState = (GtkStateFlags) (*nGTKState | GTK_STATE_FLAG_DIR_RTL);
++ }
+ }
+
+ enum {
+@@ -661,9 +666,11 @@ Rectangle GtkSalGraphics::NWGetComboBoxButtonRect( ControlType nType,
+ nButtonWidth = nArrowWidth + padding.left + padding.right;
+ if( nPart == PART_BUTTON_DOWN )
+ {
++ Point aPos = Point(aAreaRect.Left() + aAreaRect.GetWidth() - nButtonWidth, aAreaRect.Top());
++ if (AllSettings::GetLayoutRTL())
++ aPos.X() = aAreaRect.Left();
+ aButtonRect.SetSize( Size( nButtonWidth, aAreaRect.GetHeight() ) );
+- aButtonRect.SetPos( Point( aAreaRect.Left() + aAreaRect.GetWidth() - nButtonWidth,
+- aAreaRect.Top() ) );
++ aButtonRect.SetPos(aPos);
+ }
+ else if( nPart == PART_SUB_EDIT )
+ {
+@@ -675,7 +682,10 @@ Rectangle GtkSalGraphics::NWGetComboBoxButtonRect( ControlType nType,
+ aButtonRect.SetSize( Size( aAreaRect.GetWidth() - nButtonWidth - (adjust_left + adjust_right),
+ aAreaRect.GetHeight() - (adjust_top + adjust_bottom)) );
+ Point aEditPos = aAreaRect.TopLeft();
+- aEditPos.X() += adjust_left;
++ if (AllSettings::GetLayoutRTL())
++ aEditPos.X() += nButtonWidth;
++ else
++ aEditPos.X() += adjust_left;
+ aEditPos.Y() += adjust_top;
+ aButtonRect.SetPos( aEditPos );
+ }
+@@ -703,6 +713,8 @@ void GtkSalGraphics::PaintCombobox( GtkStateFlags flags, cairo_t *cr,
+
+ Rectangle aEditBoxRect( areaRect );
+ aEditBoxRect.SetSize( Size( areaRect.GetWidth() - buttonRect.GetWidth(), aEditBoxRect.GetHeight() ) );
++ if (AllSettings::GetLayoutRTL())
++ aEditBoxRect.SetPos( Point( areaRect.Left() + buttonRect.GetWidth(), areaRect.Top() ) );
+
+ arrowRect.SetSize( Size( (gint)(ARROW_SIZE),
+ (gint)(ARROW_SIZE) ) );
+@@ -719,7 +731,10 @@ void GtkSalGraphics::PaintCombobox( GtkStateFlags flags, cairo_t *cr,
+ {
+ gtk_style_context_save(mpEntryStyle);
+ gtk_style_context_set_state(mpEntryStyle, flags);
+- gtk_style_context_set_junction_sides(mpEntryStyle, GTK_JUNCTION_RIGHT);
++ if (AllSettings::GetLayoutRTL())
++ gtk_style_context_set_junction_sides(mpEntryStyle, GTK_JUNCTION_LEFT);
++ else
++ gtk_style_context_set_junction_sides(mpEntryStyle, GTK_JUNCTION_RIGHT);
+
+ gtk_render_background(mpComboboxStyle, cr,
+ 0, 0,
+@@ -727,12 +742,13 @@ void GtkSalGraphics::PaintCombobox( GtkStateFlags flags, cairo_t *cr,
+ gtk_render_frame(mpComboboxStyle, cr,
+ 0, 0,
+ areaRect.GetWidth(), areaRect.GetHeight());
+-
+ gtk_render_background(mpEntryStyle, cr,
+- 0, 0,
++ (aEditBoxRect.Left() - areaRect.Left()),
++ (aEditBoxRect.Top() - areaRect.Top()),
+ aEditBoxRect.GetWidth(), aEditBoxRect.GetHeight() );
+ gtk_render_frame(mpEntryStyle, cr,
+- 0, 0,
++ (aEditBoxRect.Left() - areaRect.Left()),
++ (aEditBoxRect.Top() - areaRect.Top()),
+ aEditBoxRect.GetWidth(), aEditBoxRect.GetHeight() );
+
+ gtk_style_context_restore(mpEntryStyle);
+--
+cgit v0.10.2
+
diff --git a/patches/series b/patches/series
index 8d6e17e..d9dc9e4 100644
--- a/patches/series
+++ b/patches/series
@@ -30,3 +30,4 @@ gcj-no-bitness-check.diff
rsc-no-error-about-unknown-switch.diff
liborcus-0.9.1.diff
disable-tiledrendering-test.diff
+gtk3-rtl.diff
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-openoffice/libreoffice.git
Reply to: