diff options
| author | 2014-12-09 00:18:40 +0000 | |
|---|---|---|
| committer | 2014-12-09 00:18:40 +0000 | |
| commit | 4b944f3ab8cd9959ccba3cee4cfd9fb36ab15a3a (patch) | |
| tree | e2e8d3dff73d15c7e038ecf4d7eac36fca293c0a | |
| parent | 8dd185b08fae8d41bec558ab5a63012454cbb78e (diff) | |
| parent | 7781647aa90d7d7a070ecd79e52c2d8a11b59b5c (diff) | |
am 7781647a: Merge "Fix auto-advance regression in radial time picker" into lmp-mr1-dev
* commit '7781647aa90d7d7a070ecd79e52c2d8a11b59b5c':
Fix auto-advance regression in radial time picker
| -rw-r--r-- | core/java/android/widget/RadialTimePickerView.java | 39 |
1 files changed, 21 insertions, 18 deletions
diff --git a/core/java/android/widget/RadialTimePickerView.java b/core/java/android/widget/RadialTimePickerView.java index 04b5616de72d..75c6184b0e46 100644 --- a/core/java/android/widget/RadialTimePickerView.java +++ b/core/java/android/widget/RadialTimePickerView.java @@ -1246,37 +1246,40 @@ public class RadialTimePickerView extends View implements View.OnTouchListener { } final int[] selectionDegrees = mSelectionDegrees; - int type = -1; - int newValue = -1; + final int type; + final int newValue; + final boolean valueChanged; if (mShowHours) { final int snapDegrees = snapOnly30s(degrees, 0) % 360; - if (forceSelection - || selectionDegrees[HOURS] != snapDegrees + valueChanged = selectionDegrees[HOURS] != snapDegrees || selectionDegrees[HOURS_INNER] != snapDegrees - || wasOnInnerCircle != mIsOnInnerCircle) { - selectionDegrees[HOURS] = snapDegrees; - selectionDegrees[HOURS_INNER] = snapDegrees; + || wasOnInnerCircle != mIsOnInnerCircle; - type = HOURS; - newValue = getCurrentHour(); - } + selectionDegrees[HOURS] = snapDegrees; + selectionDegrees[HOURS_INNER] = snapDegrees; + type = HOURS; + newValue = getCurrentHour(); } else { final int snapDegrees = snapPrefer30s(degrees) % 360; - if (forceSelection || selectionDegrees[MINUTES] != snapDegrees) { - selectionDegrees[MINUTES] = snapDegrees; + valueChanged = selectionDegrees[MINUTES] != snapDegrees; - type = MINUTES; - newValue = getCurrentMinute(); - } + selectionDegrees[MINUTES] = snapDegrees; + type = MINUTES; + newValue = getCurrentMinute(); } - if (newValue != -1) { + if (valueChanged || forceSelection || autoAdvance) { + // Fire the listener even if we just need to auto-advance. if (mListener != null) { mListener.onValueSelected(type, newValue, autoAdvance); } - performHapticFeedback(HapticFeedbackConstants.CLOCK_TICK); - invalidate(); + + // Only provide feedback if the value actually changed. + if (valueChanged || forceSelection) { + performHapticFeedback(HapticFeedbackConstants.CLOCK_TICK); + invalidate(); + } return true; } |