From 7e201ba289537c2cf31add2bb19bd09fde71a209 Mon Sep 17 00:00:00 2001 From: Julian Raufelder Date: Thu, 7 Apr 2022 01:19:34 +0200 Subject: [PATCH] Fix crash on some devices when browsing images and clicking on screen Fixes #429 --- .../presentation/util/ViewPagerWorkaround.kt | 32 +++++++++++++++++++ .../res/layout/activity_image_preview.xml | 2 +- 2 files changed, 33 insertions(+), 1 deletion(-) create mode 100644 presentation/src/main/java/org/cryptomator/presentation/util/ViewPagerWorkaround.kt diff --git a/presentation/src/main/java/org/cryptomator/presentation/util/ViewPagerWorkaround.kt b/presentation/src/main/java/org/cryptomator/presentation/util/ViewPagerWorkaround.kt new file mode 100644 index 00000000..69269bfc --- /dev/null +++ b/presentation/src/main/java/org/cryptomator/presentation/util/ViewPagerWorkaround.kt @@ -0,0 +1,32 @@ +package org.cryptomator.presentation.util + +import android.content.Context +import android.util.AttributeSet +import android.view.MotionEvent +import androidx.viewpager.widget.ViewPager + +/** + * Workaround for https://github.com/cryptomator/android/issues/429 + * Source https://github.com/Baseflow/PhotoView/issues/31#issuecomment-19803926 + */ +class ViewPagerWorkaround : ViewPager { + + constructor(context: Context) : super(context) + constructor(context: Context, attrs: AttributeSet?) : super(context, attrs) + + override fun onTouchEvent(ev: MotionEvent?): Boolean { + return try { + super.onTouchEvent(ev) + } catch (ex: IllegalArgumentException) { + false + } + } + + override fun onInterceptTouchEvent(ev: MotionEvent?): Boolean { + return try { + super.onInterceptTouchEvent(ev) + } catch (ex: IllegalArgumentException) { + false + } + } +} diff --git a/presentation/src/main/res/layout/activity_image_preview.xml b/presentation/src/main/res/layout/activity_image_preview.xml index a25fac71..24071d41 100644 --- a/presentation/src/main/res/layout/activity_image_preview.xml +++ b/presentation/src/main/res/layout/activity_image_preview.xml @@ -6,7 +6,7 @@ android:layout_height="match_parent" android:background="@color/colorBlack"> -