@@ -3,11 +3,14 @@ package com.w2sv.autocrop.ui.screen.comparison
33import android.annotation.SuppressLint
44import android.content.Context
55import android.os.Bundle
6+ import android.view.MotionEvent.ACTION_CANCEL
67import android.view.MotionEvent.ACTION_DOWN
78import android.view.MotionEvent.ACTION_UP
89import android.view.View
910import android.view.animation.DecelerateInterpolator
1011import androidx.appcompat.widget.AppCompatImageView
12+ import androidx.core.view.ViewCompat
13+ import androidx.core.view.WindowInsetsCompat
1114import androidx.core.view.doOnNextLayout
1215import androidx.lifecycle.lifecycleScope
1316import androidx.navigation.fragment.navArgs
@@ -18,13 +21,13 @@ import com.w2sv.androidutils.view.crossVisualize
1821import com.w2sv.autocrop.R
1922import com.w2sv.autocrop.databinding.ComparisonBinding
2023import com.w2sv.autocrop.ui.ViewBoundAppFragment
21- import com.w2sv.autocrop.ui.views.FadeOutTextView
2224import com.w2sv.autocrop.ui.screen.cropSessionInjectedViewModel
2325import com.w2sv.autocrop.ui.screen.cropadjustment.extensions.getScaleY
2426import com.w2sv.autocrop.ui.util.hideSystemBars
2527import com.w2sv.autocrop.ui.util.postponeEnterTransition
2628import com.w2sv.autocrop.ui.util.registerOnBackPressedHandler
2729import com.w2sv.autocrop.ui.util.showSystemBars
30+ import com.w2sv.autocrop.ui.views.FadeOutTextView
2831import com.w2sv.kotlinutils.coroutines.flow.collectLatestOn
2932import com.w2sv.kotlinutils.coroutines.launchDelayed
3033import dagger.hilt.android.AndroidEntryPoint
@@ -114,14 +117,27 @@ class ComparisonFragment : ViewBoundAppFragment<ComparisonBinding>(ComparisonBin
114117 @SuppressLint(" ClickableViewAccessibility" )
115118 private fun ComparisonBinding.setOnTouchEventListeners () {
116119 root.setOnTouchListener { v, event ->
117- when (event.action) {
120+ val insets = ViewCompat .getRootWindowInsets(root)
121+ val statusBarHeight = insets?.getInsetsIgnoringVisibility(WindowInsetsCompat .Type .statusBars())?.top
122+ ? : 0
123+ val navBarHeight = insets?.getInsetsIgnoringVisibility(WindowInsetsCompat .Type .navigationBars())?.bottom
124+ ? : 0
125+
126+ // Ignore touches in system bar areas
127+ val y = event.y.toInt()
128+ if (y < statusBarHeight || y > root.height - navBarHeight) {
129+ return @setOnTouchListener false
130+ }
131+
132+ when (event.actionMasked) {
118133 ACTION_DOWN -> {
119134 viewModel.setImageType(ImageType .Original )
135+ // Lets accessibility services know the view was clicked, which enables those services to react to it
120136 v.performClick()
121137 true
122138 }
123139
124- ACTION_UP -> {
140+ ACTION_UP , ACTION_CANCEL -> {
125141 viewModel.setImageType(ImageType .Crop )
126142 true
127143 }
0 commit comments