[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

[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: