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:
@@ -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) {
|
||||
|
||||
@@ -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)) {
|
||||
|
||||
Reference in New Issue
Block a user