[gtk+] Entry—Fix inverted movements by arrow keys in RTL
- From: Daniel Boles <dboles src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+] Entry—Fix inverted movements by arrow keys in RTL
- Date: Sun, 19 Feb 2017 12:40:45 +0000 (UTC)
commit 4bea7b0ae841821f13b7a3f2297b0d41342377e2
Author: Daniel Boles <dboles src gnome org>
Date: Sat Feb 18 22:50:00 2017 +0000
Entry—Fix inverted movements by arrow keys in RTL
Using Ctrl + left/right to skip between words, or left/right to cancel a
selection, were causing movement on the screen in the opposite direction
of the glyph on the key. This was surprising and awful UX for RTL users.
This is based on a patch covering the former case by:
Author: Ori Avtalion <ori avtalion name>
Date: Tue Apr 20 08:06:23 2010 +0000
https://bugzilla.gnome.org/show_bug.cgi?id=136059
gtk/gtkentry.c | 7 ++++++-
1 files changed, 6 insertions(+), 1 deletions(-)
---
diff --git a/gtk/gtkentry.c b/gtk/gtkentry.c
index ab698ff..49f8d8f 100644
--- a/gtk/gtkentry.c
+++ b/gtk/gtkentry.c
@@ -5177,8 +5177,11 @@ gtk_entry_move_cursor (GtkEntry *entry,
new_pos = current_x > bound_x ? priv->current_pos : priv->selection_bound;
break;
}
- case GTK_MOVEMENT_LOGICAL_POSITIONS:
case GTK_MOVEMENT_WORDS:
+ if (priv->resolved_dir == PANGO_DIRECTION_RTL)
+ count *= -1;
+ /* Fall through */
+ case GTK_MOVEMENT_LOGICAL_POSITIONS:
if (count < 0)
new_pos = MIN (priv->current_pos, priv->selection_bound);
else
@@ -5228,6 +5231,8 @@ gtk_entry_move_cursor (GtkEntry *entry,
}
break;
case GTK_MOVEMENT_WORDS:
+ if (priv->resolved_dir == PANGO_DIRECTION_RTL)
+ count *= -1;
while (count > 0)
{
new_pos = gtk_entry_move_forward_word (entry, new_pos, FALSE);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]