All Downloads are FREE. Search and download functionalities are using the official Maven repository.

commonMain.io.wojciechosak.calendar.modifiers.TouchModifers.kt Maven / Gradle / Ivy

package io.wojciechosak.calendar.modifiers

import androidx.compose.foundation.gestures.awaitEachGesture
import androidx.compose.foundation.gestures.awaitFirstDown
import androidx.compose.foundation.gestures.waitForUpOrCancellation
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.composed
import androidx.compose.ui.input.pointer.PointerEventPass
import androidx.compose.ui.input.pointer.pointerInput

/**
 * Composable function to create a modifier that passes touch gestures to a specified callback.
 *
 * @param onTouchEvent The callback function to invoke when a touch event occurs.
 * @return A modifier that listens for touch events and invokes the specified callback.
 */
@Composable
fun Modifier.passTouchGesture(onTouchEvent: () -> Unit): Modifier = composed {
    pointerInput(Unit) {
        awaitEachGesture {
            awaitFirstDown(requireUnconsumed = false)
            val change = waitForUpOrCancellation(pass = PointerEventPass.Initial)
            change?.let { onTouchEvent() }
        }
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy