summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Alan Viverette <alanv@google.com> 2014-12-09 00:18:40 +0000
committer Android Git Automerger <android-git-automerger@android.com> 2014-12-09 00:18:40 +0000
commit4b944f3ab8cd9959ccba3cee4cfd9fb36ab15a3a (patch)
treee2e8d3dff73d15c7e038ecf4d7eac36fca293c0a
parent8dd185b08fae8d41bec558ab5a63012454cbb78e (diff)
parent7781647aa90d7d7a070ecd79e52c2d8a11b59b5c (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.java39
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;
}