Skip to content

Commit 50559ff

Browse files
authored
Merge pull request #3 from nos-digital/bugfix/motionevent-nullpointer
Fix nullpointer issues with null motionevents
2 parents 0ac0311 + fd925e7 commit 50559ff

File tree

4 files changed

+22
-9
lines changed

4 files changed

+22
-9
lines changed

library/src/main/java/nl/nos/imagin/DoubleTapToZoomTouchHandler.kt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,11 @@ class DoubleTapToZoomTouchHandler(
122122
}
123123
)
124124

125-
override fun onTouch(v: View?, event: MotionEvent?) = gestureDetector.onTouchEvent(event)
125+
override fun onTouch(v: View?, event: MotionEvent?): Boolean {
126+
if (event == null) return false
127+
128+
return gestureDetector.onTouchEvent(event)
129+
}
126130

127131
companion object {
128132
var isAnimating = false

library/src/main/java/nl/nos/imagin/Imagin.kt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,11 @@ class Imagin private constructor(
4040
)
4141
)
4242
touchListeners.add { _, event ->
43-
scaleDetector.onTouchEvent(event)
43+
if (event != null) {
44+
scaleDetector.onTouchEvent(event)
45+
} else {
46+
false
47+
}
4448
}
4549
return this
4650
}

library/src/main/java/nl/nos/imagin/ScrollHandler.kt

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -32,14 +32,14 @@ class ScrollHandler(
3232
object : GestureDetector.SimpleOnGestureListener() {
3333

3434
override fun onScroll(
35-
firstMotionEvent: MotionEvent,
36-
moveMotionEvent: MotionEvent,
35+
firstMotionEvent: MotionEvent?,
36+
moveMotionEvent: MotionEvent?,
3737
distanceX: Float,
3838
distanceY: Float
3939
): Boolean {
40-
if (imageView.rightEdgeIsVisible() && distanceX > 0 && moveMotionEvent.pointerCount == 1) {
40+
if (imageView.rightEdgeIsVisible() && distanceX > 0 && moveMotionEvent?.pointerCount == 1) {
4141
imageView.parent?.requestDisallowInterceptTouchEvent(false)
42-
} else if (imageView.leftEdgeIsVisible() && distanceX < 0 && moveMotionEvent.pointerCount == 1) {
42+
} else if (imageView.leftEdgeIsVisible() && distanceX < 0 && moveMotionEvent?.pointerCount == 1) {
4343
imageView.parent?.requestDisallowInterceptTouchEvent(false)
4444
}
4545

@@ -80,12 +80,13 @@ class ScrollHandler(
8080
}
8181

8282
override fun onTouch(v: View?, event: MotionEvent?): Boolean {
83+
if (event == null) return false
84+
8385
imageView.parent?.requestDisallowInterceptTouchEvent(true)
8486

8587
val consumed = gestureDetector.onTouchEvent(event)
8688

87-
88-
if (event?.action == MotionEvent.ACTION_UP || event?.action == MotionEvent.ACTION_CANCEL) {
89+
if (event.action == MotionEvent.ACTION_UP || event.action == MotionEvent.ACTION_CANCEL) {
8990
val imageSize = calculator.calculateImageSize(imageView) ?: return consumed
9091

9192
if (allowScrollOutOfBoundsHorizontally && shouldTriggerOutOfBoundListener(

library/src/main/java/nl/nos/imagin/SingleTapHandler.kt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,11 @@ class SingleTapHandler(
2828
gestureDetector.setOnDoubleTapListener(tapListener)
2929
}
3030

31-
override fun onTouch(v: View?, event: MotionEvent?) = gestureDetector.onTouchEvent(event)
31+
override fun onTouch(v: View?, event: MotionEvent?): Boolean {
32+
if (event == null) return false
33+
34+
return gestureDetector.onTouchEvent(event)
35+
}
3236

3337
/**
3438
* Simple listener for single view taps.

0 commit comments

Comments
 (0)