blob: b93ed12e3e51e803d11c5ce8558a00e317d80180 [file]
// DUMP_IR
// MODULE: lib
// MODULE_KIND: LibraryBinary
// FILE: PopupRenderer.kt
import androidx.compose.foundation.background
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.runtime.Composable
import androidx.compose.runtime.ProvidableCompositionLocal
import androidx.compose.runtime.staticCompositionLocalOf
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.input.key.KeyEvent
import androidx.compose.ui.unit.dp
interface PopupRenderer {
// Notice that the declaration with default parameters is crashing the plugin
// While the one without default parameters works fine
@Composable
fun Popup(
onDismissRequest: (() -> Unit)? = null,
onPreviewKeyEvent: ((KeyEvent) -> Boolean)? = null,
onKeyEvent: ((KeyEvent) -> Boolean)? = null,
content: @Composable () -> Unit,
)
}
private object DefaultPopupRenderer : PopupRenderer {
@Composable
override fun Popup(
onDismissRequest: (() -> Unit)?,
onPreviewKeyEvent: ((KeyEvent) -> Boolean)?,
onKeyEvent: ((KeyEvent) -> Boolean)?,
content: @Composable () -> Unit,
) {
}
}
val LocalPopupRenderer: ProvidableCompositionLocal<PopupRenderer> =
staticCompositionLocalOf { DefaultPopupRenderer }
// MODULE: main(lib)
// FILE: main.kt
import androidx.compose.runtime.Composable
import androidx.compose.ui.input.key.KeyEvent
import androidx.compose.foundation.text.BasicText
private object AlternativeDesktopPopupRenderer : PopupRenderer {
@Composable
override fun Popup(
onDismissRequest: (() -> Unit)?,
onPreviewKeyEvent: ((KeyEvent) -> Boolean)?,
onKeyEvent: ((KeyEvent) -> Boolean)?,
content: @Composable () -> Unit,
) {
BasicText("Test")
}
}