From 37348a5dfcf50c02cff38ac96ef329457ccfdb48 Mon Sep 17 00:00:00 2001 From: Abdelilah El Aissaoui Date: Sat, 25 Mar 2023 14:03:17 +0100 Subject: [PATCH] Fixed multiple dialogs/windows were closed in a single press on ESC Fixed #9 --- src/main/kotlin/com/jetpackduba/gitnuro/ui/Blame.kt | 4 +++- src/main/kotlin/com/jetpackduba/gitnuro/ui/FileHistory.kt | 4 +++- .../com/jetpackduba/gitnuro/ui/dialogs/MaterialDialog.kt | 4 +++- src/main/kotlin/com/jetpackduba/gitnuro/ui/diff/Diff.kt | 4 +++- src/main/kotlin/com/jetpackduba/gitnuro/ui/log/Log.kt | 6 +++--- 5 files changed, 15 insertions(+), 7 deletions(-) diff --git a/src/main/kotlin/com/jetpackduba/gitnuro/ui/Blame.kt b/src/main/kotlin/com/jetpackduba/gitnuro/ui/Blame.kt index 6f4f8a8..91a83dd 100644 --- a/src/main/kotlin/com/jetpackduba/gitnuro/ui/Blame.kt +++ b/src/main/kotlin/com/jetpackduba/gitnuro/ui/Blame.kt @@ -20,7 +20,9 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.focus.FocusRequester import androidx.compose.ui.focus.focusRequester import androidx.compose.ui.graphics.ColorFilter +import androidx.compose.ui.input.key.KeyEventType import androidx.compose.ui.input.key.onPreviewKeyEvent +import androidx.compose.ui.input.key.type import androidx.compose.ui.res.painterResource import androidx.compose.ui.unit.dp import com.jetpackduba.gitnuro.AppIcons @@ -54,7 +56,7 @@ fun Blame( .focusRequester(focusRequester) .focusable() .onPreviewKeyEvent { keyEvent -> - if (keyEvent.matchesBinding(KeybindingOption.EXIT)) { + if (keyEvent.matchesBinding(KeybindingOption.EXIT) && keyEvent.type == KeyEventType.KeyDown ) { onClose() true } else diff --git a/src/main/kotlin/com/jetpackduba/gitnuro/ui/FileHistory.kt b/src/main/kotlin/com/jetpackduba/gitnuro/ui/FileHistory.kt index 7b9d530..877d484 100644 --- a/src/main/kotlin/com/jetpackduba/gitnuro/ui/FileHistory.kt +++ b/src/main/kotlin/com/jetpackduba/gitnuro/ui/FileHistory.kt @@ -18,7 +18,9 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.focus.FocusRequester import androidx.compose.ui.focus.focusRequester import androidx.compose.ui.graphics.ColorFilter +import androidx.compose.ui.input.key.KeyEventType import androidx.compose.ui.input.key.onKeyEvent +import androidx.compose.ui.input.key.type import androidx.compose.ui.res.painterResource import androidx.compose.ui.unit.dp import com.jetpackduba.gitnuro.AppIcons @@ -60,7 +62,7 @@ fun FileHistory( .focusRequester(focusRequester) .focusable() .onKeyEvent { keyEvent -> - if (keyEvent.matchesBinding(KeybindingOption.EXIT)) { + if (keyEvent.matchesBinding(KeybindingOption.EXIT) && keyEvent.type == KeyEventType.KeyDown ) { onClose() true } else diff --git a/src/main/kotlin/com/jetpackduba/gitnuro/ui/dialogs/MaterialDialog.kt b/src/main/kotlin/com/jetpackduba/gitnuro/ui/dialogs/MaterialDialog.kt index c3b0551..479b9ec 100644 --- a/src/main/kotlin/com/jetpackduba/gitnuro/ui/dialogs/MaterialDialog.kt +++ b/src/main/kotlin/com/jetpackduba/gitnuro/ui/dialogs/MaterialDialog.kt @@ -20,7 +20,9 @@ import androidx.compose.ui.draw.clip import androidx.compose.ui.focus.FocusRequester import androidx.compose.ui.focus.focusRequester import androidx.compose.ui.graphics.Color +import androidx.compose.ui.input.key.KeyEventType import androidx.compose.ui.input.key.onPreviewKeyEvent +import androidx.compose.ui.input.key.type import androidx.compose.ui.unit.* import androidx.compose.ui.window.Popup import androidx.compose.ui.window.PopupPositionProvider @@ -62,7 +64,7 @@ fun MaterialDialog( .focusRequester(focusRequester) .focusable() .onPreviewKeyEvent { keyEvent -> - if (keyEvent.matchesBinding(KeybindingOption.EXIT)) { + if (keyEvent.matchesBinding(KeybindingOption.EXIT) && keyEvent.type == KeyEventType.KeyDown ) { onCloseRequested() true } else diff --git a/src/main/kotlin/com/jetpackduba/gitnuro/ui/diff/Diff.kt b/src/main/kotlin/com/jetpackduba/gitnuro/ui/diff/Diff.kt index 2ba53fe..5c738a1 100644 --- a/src/main/kotlin/com/jetpackduba/gitnuro/ui/diff/Diff.kt +++ b/src/main/kotlin/com/jetpackduba/gitnuro/ui/diff/Diff.kt @@ -22,7 +22,9 @@ import androidx.compose.ui.focus.focusRequester import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.ColorFilter import androidx.compose.ui.graphics.ImageBitmap +import androidx.compose.ui.input.key.KeyEventType import androidx.compose.ui.input.key.onPreviewKeyEvent +import androidx.compose.ui.input.key.type import androidx.compose.ui.input.pointer.PointerEventType import androidx.compose.ui.input.pointer.onPointerEvent import androidx.compose.ui.res.loadImageBitmap @@ -83,7 +85,7 @@ fun Diff( indication = null ) {} .onPreviewKeyEvent { keyEvent -> - if (keyEvent.matchesBinding(KeybindingOption.EXIT)) { + if (keyEvent.matchesBinding(KeybindingOption.EXIT) && keyEvent.type == KeyEventType.KeyDown ) { onCloseDiffView() true } else diff --git a/src/main/kotlin/com/jetpackduba/gitnuro/ui/log/Log.kt b/src/main/kotlin/com/jetpackduba/gitnuro/ui/log/Log.kt index 5407b87..4c6ab69 100644 --- a/src/main/kotlin/com/jetpackduba/gitnuro/ui/log/Log.kt +++ b/src/main/kotlin/com/jetpackduba/gitnuro/ui/log/Log.kt @@ -297,7 +297,7 @@ fun SearchFilter( Row( modifier = Modifier .fillMaxWidth() - .height(64.dp), + .height(56.dp), verticalAlignment = Alignment.CenterVertically, ) { TextField( @@ -314,14 +314,14 @@ fun SearchFilter( .focusRequester(textFieldFocusRequester) .onPreviewKeyEvent { keyEvent -> when { - keyEvent.matchesBinding(KeybindingOption.SIMPLE_ACCEPT) && keyEvent.type == KeyEventType.KeyUp -> { + keyEvent.matchesBinding(KeybindingOption.SIMPLE_ACCEPT) && keyEvent.type == KeyEventType.KeyDown -> { scope.launch { logViewModel.selectNextFilterCommit() } true } - keyEvent.matchesBinding(KeybindingOption.EXIT) && keyEvent.type == KeyEventType.KeyUp -> { + keyEvent.matchesBinding(KeybindingOption.EXIT) && keyEvent.type == KeyEventType.KeyDown -> { logViewModel.closeSearch() true }