@@ -553,25 +553,41 @@ class WeekFragment : Fragment(), WeeklyCalendar {
553553
554554 if (areTouching && doHaveCommonMinutes) {
555555 if (eventWeeklyViewToCheck.slot == 0 ) {
556- val nextSlot = eventWeeklyView.slotMax + 1
557- val slotRange = Array (eventWeeklyView.slotMax) { it + 1 }
558- val collisionEventWeeklyViews = eventDayList.filter { eventWeeklyView.collisions.contains(it.key) }
556+ val collisionEventWeeklyViews = eventDayList
557+ .filter { eventWeeklyView.collisions.contains(it.key) }
558+ var currentSlotMax = max(
559+ eventWeeklyView.slotMax.coerceAtLeast(1 ),
560+ eventWeeklyView.slot.coerceAtLeast(1 )
561+ )
562+ val maxCollisionSlot = collisionEventWeeklyViews
563+ .maxOfOrNull { it.value.slot.coerceAtLeast(1 ) } ? : 1
564+ currentSlotMax = max(currentSlotMax, maxCollisionSlot)
565+ val nextSlot = currentSlotMax + 1
566+ val slotRange = IntArray (currentSlotMax) { it + 1 }
559567 for ((_, collisionEventWeeklyView) in collisionEventWeeklyViews) {
560- if (collisionEventWeeklyView.range.intersects(eventWeeklyViewToCheck.range)) {
568+ if (
569+ collisionEventWeeklyView.range.intersects(eventWeeklyViewToCheck.range)
570+ && collisionEventWeeklyView.slot in 1 .. currentSlotMax
571+ ) {
561572 slotRange[collisionEventWeeklyView.slot - 1 ] = nextSlot
562573 }
563574 }
564- slotRange[eventWeeklyView.slot - 1 ] = nextSlot
565- val slot = slotRange.minOrNull()
566- eventWeeklyViewToCheck.slot = slot!!
575+ if (eventWeeklyView.slot in 1 .. currentSlotMax) {
576+ slotRange[eventWeeklyView.slot - 1 ] = nextSlot
577+ }
578+
579+ val slot = slotRange.minOrNull() ? : nextSlot
580+ eventWeeklyViewToCheck.slot = slot
581+
567582 if (slot == nextSlot) {
568583 eventWeeklyViewToCheck.slotMax = nextSlot
569584 eventWeeklyView.slotMax = nextSlot
570585 for ((_, collisionEventWeeklyView) in collisionEventWeeklyViews) {
571- collisionEventWeeklyView.slotMax++
586+ collisionEventWeeklyView.slotMax =
587+ max(collisionEventWeeklyView.slotMax, nextSlot)
572588 }
573589 } else {
574- eventWeeklyViewToCheck.slotMax = eventWeeklyView.slotMax
590+ eventWeeklyViewToCheck.slotMax = currentSlotMax
575591 }
576592 }
577593 eventWeeklyView.collisions.add(toCheckId)
0 commit comments