From 1cbf78de6a5a5e1f547587c4830a48b86fb4383a Mon Sep 17 00:00:00 2001 From: Matt Pietal Date: Thu, 26 Mar 2020 11:16:42 -0400 Subject: [PATCH] Controls UI - Prevent parent scroll while using dragging control Any vertical diff while dragging would stop the drag, and scroll the parent. Request the parent to let the child maintain focus. Bug: 152493182 Test: manual, dim a light with enough controls to scroll Change-Id: I4b00db3501c16521dc3156dc4631aa533fdf17ae --- .../com/android/systemui/controls/ui/ToggleRangeBehavior.kt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/SystemUI/src/com/android/systemui/controls/ui/ToggleRangeBehavior.kt b/packages/SystemUI/src/com/android/systemui/controls/ui/ToggleRangeBehavior.kt index c495c58fff2a6..f79c8b2393d0a 100644 --- a/packages/SystemUI/src/com/android/systemui/controls/ui/ToggleRangeBehavior.kt +++ b/packages/SystemUI/src/com/android/systemui/controls/ui/ToggleRangeBehavior.kt @@ -64,12 +64,13 @@ class ToggleRangeBehavior : Behavior { val gestureListener = ToggleRangeGestureListener(cvh.layout) val gestureDetector = GestureDetector(context, gestureListener) - cvh.layout.setOnTouchListener { _: View, e: MotionEvent -> + cvh.layout.setOnTouchListener { v: View, e: MotionEvent -> if (gestureDetector.onTouchEvent(e)) { return@setOnTouchListener true } if (e.getAction() == MotionEvent.ACTION_UP && gestureListener.isDragging) { + v.getParent().requestDisallowInterceptTouchEvent(false) gestureListener.isDragging = false endUpdateRange() return@setOnTouchListener true @@ -254,6 +255,7 @@ class ToggleRangeBehavior : Behavior { yDiff: Float ): Boolean { if (!isDragging) { + v.getParent().requestDisallowInterceptTouchEvent(true) this@ToggleRangeBehavior.beginUpdateRange() isDragging = true }