@@ -41,7 +41,6 @@ class ComparisonFragment : ViewBoundAppFragment<ComparisonBinding>(ComparisonBin
4141 override fun onAttach (context : Context ) {
4242 super .onAttach(context)
4343 hideSystemBars()
44-
4544 sharedElementEnterTransition = cropEnterTransition(context)
4645 registerOnBackPressedHandler(::onBack)
4746 }
@@ -71,7 +70,7 @@ class ComparisonFragment : ViewBoundAppFragment<ComparisonBinding>(ComparisonBin
7170 binding.apply {
7271 initializeScreenshotViewAndCropViewScaleAndPositioning()
7372 initializeCropView()
74- setOnTouchEventListeners ()
73+ setOnTouchEventListener ()
7574 backButton.setOnClickListener { onBack() }
7675
7776 viewModel.fadeOutTextArgs.collectLatestOn(lifecycleScope) {
@@ -109,25 +108,13 @@ class ComparisonFragment : ViewBoundAppFragment<ComparisonBinding>(ComparisonBin
109108 }
110109
111110 @SuppressLint(" ClickableViewAccessibility" )
112- private fun ComparisonBinding.setOnTouchEventListeners () {
113- root.setOnTouchListener { v, event ->
114- val insets = ViewCompat .getRootWindowInsets(root)
115- val statusBarHeight = insets?.getInsetsIgnoringVisibility(WindowInsetsCompat .Type .statusBars())?.top
116- ? : 0
117- val navBarHeight = insets?.getInsetsIgnoringVisibility(WindowInsetsCompat .Type .navigationBars())?.bottom
118- ? : 0
119-
120- // Ignore touches in system bar areas
121- val y = event.y.toInt()
122- if (y < statusBarHeight || y > root.height - navBarHeight) {
123- return @setOnTouchListener false
124- }
125-
111+ private fun ComparisonBinding.setOnTouchEventListener () {
112+ root.setOnTouchListenerIgnoringSystemBarAreas { view, event ->
126113 when (event.actionMasked) {
127114 ACTION_DOWN -> {
128115 viewModel.setImageType(ImageType .Original )
129116 // Lets accessibility services know the view was clicked, which enables those services to react to it
130- v .performClick()
117+ view .performClick()
131118 true
132119 }
133120
@@ -148,6 +135,25 @@ class ComparisonFragment : ViewBoundAppFragment<ComparisonBinding>(ComparisonBin
148135 }
149136}
150137
138+ @SuppressLint(" ClickableViewAccessibility" )
139+ private fun View.setOnTouchListenerIgnoringSystemBarAreas (listener : View .OnTouchListener ) {
140+ setOnTouchListener { view, event ->
141+ val insets = ViewCompat .getRootWindowInsets(view)
142+ val statusBarHeight = insets?.getInsetsIgnoringVisibility(WindowInsetsCompat .Type .statusBars())?.top
143+ ? : 0
144+ val navBarHeight = insets?.getInsetsIgnoringVisibility(WindowInsetsCompat .Type .navigationBars())?.bottom
145+ ? : 0
146+
147+ // Ignore touches in system bar areas
148+ val y = event.y.toInt()
149+ if (y < statusBarHeight || y > view.height - navBarHeight) {
150+ return @setOnTouchListener false
151+ }
152+
153+ listener.onTouch(view, event)
154+ }
155+ }
156+
151157private fun Transition.onTransitionEnd (callback : () -> Unit ): Transition =
152158 addListener(
153159 object : TransitionListenerAdapter () {
0 commit comments