From 575bb3815a62b20e566ed87023b7473eeeb62e05 Mon Sep 17 00:00:00 2001 From: Johan Redestig Date: Fri, 18 Jan 2013 18:21:48 +0100 Subject: [PATCH] Consider RTL layout in DPAD navigation in AbsSeekBar Changes the behavior of onKeyDown for DPAD_LEFT/RIGHT when in RTL to move the progress in same direction as the DPAD key suggest. Change-Id: I776a48711571884a10ef9315de78bf4ebffd6e4b --- core/java/android/widget/AbsSeekBar.java | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/core/java/android/widget/AbsSeekBar.java b/core/java/android/widget/AbsSeekBar.java index b2cfdf7da22f2..6033c42458d12 100644 --- a/core/java/android/widget/AbsSeekBar.java +++ b/core/java/android/widget/AbsSeekBar.java @@ -704,19 +704,20 @@ public abstract class AbsSeekBar extends ProgressBar { @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (isEnabled()) { - int progress = getProgress(); + int increment = mKeyProgressIncrement; switch (keyCode) { case KeyEvent.KEYCODE_DPAD_LEFT: - if (progress <= 0) break; - animateSetProgress(progress - mKeyProgressIncrement); - onKeyChange(); - return true; - + increment = -increment; + // fallthrough case KeyEvent.KEYCODE_DPAD_RIGHT: - if (progress >= getMax()) break; - animateSetProgress(progress + mKeyProgressIncrement); - onKeyChange(); - return true; + increment = isLayoutRtl() ? -increment : increment; + int progress = getProgress() + increment; + if (progress > -mKeyProgressIncrement && + progress < getMax() + mKeyProgressIncrement) { + animateSetProgress(progress); + onKeyChange(); + return true; + } } }