@@ -112,6 +112,9 @@ class FavouritesNewTabSectionView @JvmOverloads constructor(
112
112
@Inject
113
113
lateinit var swipingTabsFeature: SwipingTabsFeatureProvider
114
114
115
+ @Inject
116
+ lateinit var favoritesSwipeHandling: FavoritesSwipeHandling
117
+
115
118
private var isExpandable = true
116
119
private var showPlaceholders = false
117
120
private var placement: FavoritesPlacement = FavoritesPlacement .NEW_TAB_PAGE
@@ -196,34 +199,40 @@ class FavouritesNewTabSectionView @JvmOverloads constructor(
196
199
}
197
200
198
201
override fun dispatchTouchEvent (ev : MotionEvent ? ): Boolean {
199
- if (! swipingTabsFeature.isEnabled) return super .dispatchTouchEvent(ev)
200
-
201
- when (ev?.actionMasked) {
202
- MotionEvent .ACTION_DOWN -> {
203
- viewModel.onTouchDown(ev.x, ev.y)
204
- removeCallbacks(longPressRunnable)
205
- postDelayed(longPressRunnable, longPressTimeoutMs)
206
- parent?.requestDisallowInterceptTouchEvent(false )
207
- }
202
+ val favoritesSwipeHandlingEnabled = favoritesSwipeHandling.self().isEnabled()
208
203
209
- MotionEvent .ACTION_MOVE -> {
210
- if (viewModel.isLongPressActive()) {
211
- parent?.requestDisallowInterceptTouchEvent(true )
212
- } else {
213
- viewModel.onTouchMove(ev.x, ev.y, touchSlop)?.let { decision ->
214
- when (decision) {
215
- SwipeDecision .CANCEL_LONG_PRESS -> removeCallbacks(longPressRunnable)
216
- SwipeDecision .HORIZONTAL -> parent?.requestDisallowInterceptTouchEvent(false )
217
- SwipeDecision .VERTICAL -> parent?.requestDisallowInterceptTouchEvent(true )
204
+ if (swipingTabsFeature.isEnabled && ! favoritesSwipeHandlingEnabled) {
205
+ parent?.requestDisallowInterceptTouchEvent(true )
206
+ }
207
+
208
+ if (favoritesSwipeHandlingEnabled) {
209
+ when (ev?.actionMasked) {
210
+ MotionEvent .ACTION_DOWN -> {
211
+ viewModel.onTouchDown(ev.x, ev.y)
212
+ removeCallbacks(longPressRunnable)
213
+ postDelayed(longPressRunnable, longPressTimeoutMs)
214
+ parent?.requestDisallowInterceptTouchEvent(false )
215
+ }
216
+
217
+ MotionEvent .ACTION_MOVE -> {
218
+ if (viewModel.isLongPressActive()) {
219
+ parent?.requestDisallowInterceptTouchEvent(true )
220
+ } else {
221
+ viewModel.onTouchMove(ev.x, ev.y, touchSlop)?.let { decision ->
222
+ when (decision) {
223
+ SwipeDecision .CANCEL_LONG_PRESS -> removeCallbacks(longPressRunnable)
224
+ SwipeDecision .HORIZONTAL -> parent?.requestDisallowInterceptTouchEvent(false )
225
+ SwipeDecision .VERTICAL -> parent?.requestDisallowInterceptTouchEvent(true )
226
+ }
218
227
}
219
228
}
220
229
}
221
- }
222
230
223
- MotionEvent .ACTION_UP , MotionEvent .ACTION_CANCEL -> {
224
- removeCallbacks(longPressRunnable)
225
- viewModel.onTouchUp()
226
- parent?.requestDisallowInterceptTouchEvent(false )
231
+ MotionEvent .ACTION_UP , MotionEvent .ACTION_CANCEL -> {
232
+ removeCallbacks(longPressRunnable)
233
+ viewModel.onTouchUp()
234
+ parent?.requestDisallowInterceptTouchEvent(false )
235
+ }
227
236
}
228
237
}
229
238
return super .dispatchTouchEvent(ev)
0 commit comments