diff options
author | Caolán McNamara <caolanm@redhat.com> | 2019-10-15 20:25:28 +0100 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2019-10-16 09:56:34 +0200 |
commit | 76bcbdc67f1b22a45c90bfbfdff715465f403a66 (patch) | |
tree | 86f9ff66a7f4f9ae94a138f6d4d64e27071d119f /vcl | |
parent | 170e664543453b33a2a15bbc908953c3ebf7cdaa (diff) |
swap left/right for RTL scrolling hadjustment
Change-Id: Ia1cb82c5fce09c71f9378690a35355cb6636e6ae
Reviewed-on: https://gerrit.libreoffice.org/80858
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Tested-by: Caolán McNamara <caolanm@redhat.com>
Diffstat (limited to 'vcl')
-rw-r--r-- | vcl/unx/gtk3/gtk3gtkinst.cxx | 23 |
1 files changed, 22 insertions, 1 deletions
diff --git a/vcl/unx/gtk3/gtk3gtkinst.cxx b/vcl/unx/gtk3/gtk3gtkinst.cxx index 333f0e395f8b..3928e498ba35 100644 --- a/vcl/unx/gtk3/gtk3gtkinst.cxx +++ b/vcl/unx/gtk3/gtk3gtkinst.cxx @@ -4997,18 +4997,39 @@ public: int page_size) override { disable_notify_events(); + if (SwapForRTL()) + value = upper - (value - lower + page_size); gtk_adjustment_configure(m_pHAdjustment, value, lower, upper, step_increment, page_increment, page_size); enable_notify_events(); } virtual int hadjustment_get_value() const override { - return gtk_adjustment_get_value(m_pHAdjustment); + int value = gtk_adjustment_get_value(m_pHAdjustment); + + if (SwapForRTL()) + { + int upper = gtk_adjustment_get_upper(m_pHAdjustment); + int lower = gtk_adjustment_get_lower(m_pHAdjustment); + int page_size = gtk_adjustment_get_page_size(m_pHAdjustment); + value = lower + (upper - value - page_size); + } + + return value; } virtual void hadjustment_set_value(int value) override { disable_notify_events(); + + if (SwapForRTL()) + { + int upper = gtk_adjustment_get_upper(m_pHAdjustment); + int lower = gtk_adjustment_get_lower(m_pHAdjustment); + int page_size = gtk_adjustment_get_page_size(m_pHAdjustment); + value = upper - (value - lower + page_size); + } + gtk_adjustment_set_value(m_pHAdjustment, value); enable_notify_events(); } |