summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Johan Redestig <johan.redestig@sonymobile.com> 2013-01-18 18:21:48 +0100
committer Johan Redestig <johan.redestig@sonymobile.com> 2014-11-11 12:35:56 +0100
commit575bb3815a62b20e566ed87023b7473eeeb62e05 (patch)
treee141d5e32172948c13682851feb29a104d857158
parent71f83672f297b116988defbe989869e5744cda5e (diff)
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
-rw-r--r--core/java/android/widget/AbsSeekBar.java21
1 files changed, 11 insertions, 10 deletions
diff --git a/core/java/android/widget/AbsSeekBar.java b/core/java/android/widget/AbsSeekBar.java
index b2cfdf7da22f..6033c42458d1 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;
+ }
}
}