Merge "Controls UI - Do not update while drag in progress" into rvc-dev am: a7143d54c7
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/11919891 Change-Id: I993b739f8d58c7a1250a907097439b7d4c138056
This commit is contained in:
@@ -128,6 +128,8 @@ class ControlViewHolder(
|
||||
val controlTemplate: ControlTemplate
|
||||
get() = cws.control?.let { it.controlTemplate } ?: ControlTemplate.NO_TEMPLATE
|
||||
|
||||
var userInteractionInProgress = false
|
||||
|
||||
init {
|
||||
val ld = layout.getBackground() as LayerDrawable
|
||||
ld.mutate()
|
||||
@@ -139,6 +141,11 @@ class ControlViewHolder(
|
||||
}
|
||||
|
||||
fun bindData(cws: ControlWithState) {
|
||||
// If an interaction is in progress, the update may visually interfere with the action the
|
||||
// action the user wants to make. Don't apply the update, and instead assume a new update
|
||||
// will coming from when the user interaction is complete.
|
||||
if (userInteractionInProgress) return
|
||||
|
||||
this.cws = cws
|
||||
|
||||
cancelUpdate?.run()
|
||||
|
||||
@@ -216,6 +216,7 @@ class ToggleRangeBehavior : Behavior {
|
||||
}
|
||||
|
||||
fun beginUpdateRange() {
|
||||
cvh.userInteractionInProgress = true
|
||||
cvh.setStatusTextSize(context.getResources()
|
||||
.getDimensionPixelSize(R.dimen.control_status_expanded).toFloat())
|
||||
}
|
||||
@@ -296,6 +297,7 @@ class ToggleRangeBehavior : Behavior {
|
||||
cvh.setStatusText("$currentStatusText $currentRangeValue", /* immediately */ true)
|
||||
cvh.controlActionCoordinator.setValue(cvh, rangeTemplate.getTemplateId(),
|
||||
findNearestStep(levelToRangeValue(clipLayer.getLevel())))
|
||||
cvh.userInteractionInProgress = false
|
||||
}
|
||||
|
||||
fun findNearestStep(value: Float): Float {
|
||||
|
||||
Reference in New Issue
Block a user