@@ -115,16 +115,17 @@ class MonthView(context: Context, attrs: AttributeSet, defStyle: Int) : View(con
115115 }
116116
117117 private fun groupAllEvents () {
118- days.forEach {
119- val day = it
120- day.dayEvents.forEach {
121- val event = it
118+ days.forEach { day ->
122119
120+ day.dayEvents.forEach { event ->
123121 // make sure we properly handle events lasting multiple days and repeating ones
124122 val lastEvent = allEvents.lastOrNull { it.id == event.id }
125123 val daysCnt = getEventLastingDaysCount(event)
126124 val validDayEvent = isDayValid(event, day.code)
127- if ((lastEvent == null || lastEvent.startDayIndex + daysCnt <= day.indexOnMonthView) && ! validDayEvent) {
125+
126+ val lastDay = { findLastDay(event) ? : day }
127+
128+ if ((lastEvent == null || lastEvent.startDayIndex + daysCnt <= lastDay().indexOnMonthView) && ! validDayEvent) {
128129 val monthViewEvent = MonthViewEvent (
129130 event.id!! , event.title, event.startTS, event.endTS, event.color, day.indexOnMonthView,
130131 daysCnt, day.indexOnMonthView, event.getIsAllDay(), event.isPastEvent, event.isTask(), event.isTaskCompleted()
@@ -135,8 +136,9 @@ class MonthView(context: Context, attrs: AttributeSet, defStyle: Int) : View(con
135136 }
136137
137138 allEvents =
138- allEvents.asSequence().sortedWith(compareBy({ - it.daysCnt }, { ! it.isAllDay }, { it.startTS }, { it.endTS }, { it.startDayIndex }, { it.title }))
139- .toMutableList() as ArrayList <MonthViewEvent >
139+ allEvents.asSequence().sortedWith(
140+ compareBy({ - it.daysCnt }, { ! it.isAllDay }, { it.startTS }, { it.endTS }, { it.startDayIndex }, { it.title })
141+ ).toMutableList() as ArrayList <MonthViewEvent >
140142 }
141143
142144 override fun onDraw (canvas : Canvas ) {
@@ -287,7 +289,7 @@ class MonthView(context: Context, attrs: AttributeSet, defStyle: Int) : View(con
287289 }
288290
289291 val startDayIndex = days[event.originalStartDayIndex]
290- val endDayIndex = days[Math . min(event.startDayIndex + event.daysCnt - 1 , 41 )]
292+ val endDayIndex = days[min(event.startDayIndex + event.daysCnt - 1 , 41 )]
291293 bgRectF.set(bgLeft, bgTop, bgRight, bgBottom)
292294 canvas.drawRoundRect(bgRectF, BG_CORNER_RADIUS , BG_CORNER_RADIUS , getEventBackgroundColor(event, startDayIndex, endDayIndex))
293295
@@ -303,7 +305,7 @@ class MonthView(context: Context, attrs: AttributeSet, defStyle: Int) : View(con
303305
304306 drawEventTitle(event, canvas, xPos + taskIconWidth, yPos + verticalOffset, bgRight - bgLeft - smallPadding - taskIconWidth, specificEventTitlePaint)
305307
306- for (i in 0 until Math . min(event.daysCnt, 7 - event.startDayIndex % 7 )) {
308+ for (i in 0 until min(event.daysCnt, 7 - event.startDayIndex % 7 )) {
307309 dayVerticalOffsets.put(event.startDayIndex + i, verticalOffset + eventTitleHeight + smallPadding * 2 )
308310 }
309311 }
@@ -431,6 +433,11 @@ class MonthView(context: Context, attrs: AttributeSet, defStyle: Int) : View(con
431433 return event.startTS != event.endTS && Formatter .getDateTimeFromTS(event.endTS) == Formatter .getDateTimeFromTS(date.seconds()).withTimeAtStartOfDay()
432434 }
433435
436+ private fun findLastDay (event : Event ) =
437+ days.lastOrNull { day ->
438+ day.dayEvents.find { it.id == event.id } != null
439+ }
440+
434441 fun togglePrintMode () {
435442 isPrintVersion = ! isPrintVersion
436443 textColor = if (isPrintVersion) {
0 commit comments