Forward SeekBarPreference key events to seekBar view

This is to ensure that seek bar progress gets properly updated,
and that progress changes reported by the seek bar are marked as
coming from user.

BUG=24416333
BUG=20049245

Change-Id: I0a48c8eae1528937024ca54720cac91c7d21b0b9
This commit is contained in:
Toni Barzic
2015-09-29 14:50:33 -07:00
parent 7c082caf65
commit e9889bf372
2 changed files with 11 additions and 11 deletions

View File

@@ -96,18 +96,15 @@ public class SeekBarPreference extends Preference
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (event.getAction() != KeyEvent.ACTION_UP) {
if (keyCode == KeyEvent.KEYCODE_PLUS
|| keyCode == KeyEvent.KEYCODE_EQUALS) {
setProgress(getProgress() + 1);
return true;
}
if (keyCode == KeyEvent.KEYCODE_MINUS) {
setProgress(getProgress() - 1);
return true;
}
if (event.getAction() != KeyEvent.ACTION_DOWN) {
return false;
}
return false;
SeekBar seekBar = (SeekBar) v.findViewById(com.android.internal.R.id.seekbar);
if (seekBar == null) {
return false;
}
return seekBar.onKeyDown(keyCode, event);
}
public void setMax(int max) {

View File

@@ -706,9 +706,12 @@ public abstract class AbsSeekBar extends ProgressBar {
int increment = mKeyProgressIncrement;
switch (keyCode) {
case KeyEvent.KEYCODE_DPAD_LEFT:
case KeyEvent.KEYCODE_MINUS:
increment = -increment;
// fallthrough
case KeyEvent.KEYCODE_DPAD_RIGHT:
case KeyEvent.KEYCODE_PLUS:
case KeyEvent.KEYCODE_EQUALS:
increment = isLayoutRtl() ? -increment : increment;
if (setProgressInternal(getProgress() + increment, true, true)) {