Skip to content

Commit cdb65a4

Browse files
committed
Fix issue where click listeners didn't work after zooming
1 parent fcc1c2f commit cdb65a4

File tree

3 files changed

+15
-16
lines changed

3 files changed

+15
-16
lines changed

core/src/main/java/com/alamkanak/weekview/SingleEventsUpdater.kt

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -45,9 +45,10 @@ internal class SingleEventsUpdater<T : Any>(
4545
}
4646

4747
private val RectF.isValidSingleEventRect: Boolean
48-
get() = (left < right &&
49-
left < view.width &&
50-
top < view.height &&
51-
right > config.timeColumnWidth &&
52-
bottom > config.headerHeight)
48+
get() {
49+
val hasCorrectWidth = left < right && left < view.width
50+
val hasCorrectHeight = top < view.height
51+
val isNotHiddenByChrome = right > config.timeColumnWidth && bottom > config.headerHeight
52+
return hasCorrectWidth && hasCorrectHeight && isNotHiddenByChrome
53+
}
5354
}

core/src/main/java/com/alamkanak/weekview/WeekView.kt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,7 @@ class WeekView<T : Any> @JvmOverloads constructor(
2828
}
2929

3030
private val gestureListener = object : WeekViewGestureHandler.Listener {
31-
override fun onScaled() = invalidate()
32-
override fun onScrolled() = ViewCompat.postInvalidateOnAnimation(this@WeekView)
31+
override fun requireInvalidation() = ViewCompat.postInvalidateOnAnimation(this@WeekView)
3332
}
3433

3534
private val cache = WeekViewCache<T>()

core/src/main/java/com/alamkanak/weekview/WeekViewGestureHandler.kt

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ internal class WeekViewGestureHandler<T : Any>(
5656
object : ScaleGestureDetector.OnScaleGestureListener {
5757
override fun onScaleEnd(detector: ScaleGestureDetector) {
5858
isZooming = false
59-
chipCache.clearSingleEventsCache()
59+
listener.requireInvalidation()
6060
}
6161

6262
override fun onScaleBegin(detector: ScaleGestureDetector): Boolean {
@@ -68,7 +68,7 @@ internal class WeekViewGestureHandler<T : Any>(
6868
override fun onScale(detector: ScaleGestureDetector): Boolean {
6969
val hourHeight = config.hourHeight
7070
config.newHourHeight = hourHeight * detector.scaleFactor
71-
listener.onScaled()
71+
listener.requireInvalidation()
7272
return true
7373
}
7474
})
@@ -138,11 +138,11 @@ internal class WeekViewGestureHandler<T : Any>(
138138
config.currentOrigin.x -= distanceX * config.xScrollingSpeed
139139
config.currentOrigin.x = min(config.currentOrigin.x, config.maxX)
140140
config.currentOrigin.x = max(config.currentOrigin.x, config.minX)
141-
listener.onScrolled()
141+
listener.requireInvalidation()
142142
}
143143
currentScrollDirection.isVertical -> {
144144
config.currentOrigin.y -= distanceY
145-
listener.onScrolled()
145+
listener.requireInvalidation()
146146
}
147147
else -> Unit
148148
}
@@ -178,7 +178,7 @@ internal class WeekViewGestureHandler<T : Any>(
178178
else -> Unit
179179
}
180180

181-
listener.onScrolled()
181+
listener.requireInvalidation()
182182
return true
183183
}
184184

@@ -331,7 +331,7 @@ internal class WeekViewGestureHandler<T : Any>(
331331
val duration = (daysScrolled * config.scrollDuration).toInt()
332332

333333
scroller.startScroll(startX, startY, distanceX, distanceY, duration)
334-
listener.onScrolled()
334+
listener.requireInvalidation()
335335
}
336336

337337
// Reset scrolling and fling direction.
@@ -378,7 +378,7 @@ internal class WeekViewGestureHandler<T : Any>(
378378
} else if (scroller.computeScrollOffset()) {
379379
config.currentOrigin.y = scroller.currY.toFloat()
380380
config.currentOrigin.x = scroller.currX.toFloat()
381-
listener.onScrolled()
381+
listener.requireInvalidation()
382382
}
383383
}
384384
}
@@ -397,7 +397,6 @@ internal class WeekViewGestureHandler<T : Any>(
397397
get() = ViewConfiguration.get(context).scaledTouchSlop
398398

399399
internal interface Listener {
400-
fun onScaled()
401-
fun onScrolled()
400+
fun requireInvalidation()
402401
}
403402
}

0 commit comments

Comments
 (0)