iosMain.com.outsidesource.oskitcompose.modifier.iOSPointer.kt Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of oskit-compose Show documentation
Show all versions of oskit-compose Show documentation
An opinionated architecture/library for Compose Multiplatform development
The newest version!
package com.outsidesource.oskitcompose.modifier
import androidx.compose.foundation.gestures.awaitEachGesture
import androidx.compose.foundation.gestures.awaitFirstDown
import androidx.compose.ui.Modifier
import androidx.compose.ui.geometry.Offset
import androidx.compose.ui.input.pointer.*
actual fun Modifier.kmpPointerMoveFilter(
onMove: (Offset) -> Boolean,
onEnter: () -> Boolean,
onExit: () -> Boolean,
): Modifier = this.pointerInput(Unit) {
awaitEachGesture {
awaitFirstDown()
onEnter()
while (true) {
val event = awaitPointerEvent().changes.first()
if (event.changedToUp()) {
onExit()
break
} else if (event.positionChanged()) {
onMove(event.position)
}
}
}
}
actual fun Modifier.kmpOnExternalDrag(
enabled: Boolean,
onDragStart: (KMPExternalDragValue) -> Unit,
onDrag: (KMPExternalDragValue) -> Unit,
onDragExit: () -> Unit,
onDrop: (KMPExternalDragValue) -> Unit,
): Modifier = this