From bdb4bcb702b62403ace6fe5e79249c2ef45e3cea Mon Sep 17 00:00:00 2001 From: Abdelilah El Aissaoui Date: Sat, 13 Jul 2024 19:10:17 +0200 Subject: [PATCH] Fixed context menu showing old state when changing the list of items --- .../gitnuro/ui/context_menu/ContextMenu.kt | 40 +++++++++---------- 1 file changed, 19 insertions(+), 21 deletions(-) diff --git a/src/main/kotlin/com/jetpackduba/gitnuro/ui/context_menu/ContextMenu.kt b/src/main/kotlin/com/jetpackduba/gitnuro/ui/context_menu/ContextMenu.kt index c53d4336..125b1912 100644 --- a/src/main/kotlin/com/jetpackduba/gitnuro/ui/context_menu/ContextMenu.kt +++ b/src/main/kotlin/com/jetpackduba/gitnuro/ui/context_menu/ContextMenu.kt @@ -52,7 +52,7 @@ private var lastCheck: Long = 0 private const val MIN_TIME_BETWEEN_POPUPS_IN_MS = 20 @Composable -fun ContextMenu(enabled: Boolean = true,items: () -> List, function: @Composable () -> Unit) { +fun ContextMenu(enabled: Boolean = true, items: () -> List, function: @Composable () -> Unit) { Box(modifier = Modifier.contextMenu(enabled, items), propagateMinConstraints = true) { function() } @@ -69,17 +69,17 @@ fun DropdownMenu(items: () -> List, function: @Composable () @OptIn(ExperimentalComposeUiApi::class) @Composable private fun Modifier.contextMenu(enabled: Boolean, items: () -> List): Modifier { - val (contentMenuData, setContentMenuData) = remember { mutableStateOf(null) } + val (mouseEvent, setMouseEvent) = remember { mutableStateOf(null) } val modifier = this.pointerInput(enabled) { awaitPointerEventScope { while (true) { - val lastMouseEvent = awaitFirstDownEvent() - val mouseEvent = lastMouseEvent.awtEventOrNull + val lastPointerEvent = awaitFirstDownEvent() + val lastMouseEvent = lastPointerEvent.awtEventOrNull - if (mouseEvent != null && enabled) { - if (lastMouseEvent.button.isSecondary) { - lastMouseEvent.changes.forEach { + if (lastMouseEvent != null && enabled) { + if (lastPointerEvent.button.isSecondary) { + lastPointerEvent.changes.forEach { it.consume() } @@ -89,7 +89,7 @@ private fun Modifier.contextMenu(enabled: Boolean, items: () -> List List, - val mouseEvent: MouseEvent, -) - @Composable private fun Modifier.dropdownMenu(items: () -> List): Modifier { val (isClicked, setIsClicked) = remember { mutableStateOf(false) }