1
0
mirror of https://github.com/chylex/IntelliJ-Keyboard-Master.git synced 2025-04-22 08:15:43 +02:00

Fix vim-style bindings stealing keys from inline text fields

This commit is contained in:
chylex 2024-05-17 19:11:53 +02:00
parent cd69968868
commit ca075869eb
Signed by: chylex
GPG Key ID: 4DE42C8F19A80548

View File

@ -4,6 +4,7 @@ import com.chylex.intellij.keyboardmaster.PluginDisposableService
import com.intellij.openapi.actionSystem.ActionUpdateThread
import com.intellij.openapi.actionSystem.AnAction
import com.intellij.openapi.actionSystem.AnActionEvent
import com.intellij.openapi.actionSystem.CommonDataKeys
import com.intellij.openapi.actionSystem.KeyboardShortcut
import com.intellij.openapi.actionSystem.ex.ActionUtil
import com.intellij.openapi.application.ApplicationManager
@ -112,7 +113,16 @@ internal open class VimNavigationDispatcher<T : JComponent>(final override val c
}
final override fun update(e: AnActionEvent) {
e.presentation.isEnabled = !isSearching.get() || e.inputEvent.let { it is KeyEvent && it.id == KeyEvent.KEY_PRESSED && it.keyCode == KeyEvent.VK_ENTER }
e.presentation.isEnabled = !ignoreEventDueToActiveSearch(e) && !ignoreEventDueToActiveEditing(e)
}
private fun ignoreEventDueToActiveSearch(e: AnActionEvent): Boolean {
return isSearching.get() && !e.inputEvent.let { it is KeyEvent && it.id == KeyEvent.KEY_PRESSED && it.keyCode == KeyEvent.VK_ENTER }
}
private fun ignoreEventDueToActiveEditing(e: AnActionEvent): Boolean {
// Avoid stealing keys from inline text fields.
return e.dataContext.getData(CommonDataKeys.EDITOR) != null
}
final override fun getActionUpdateThread(): ActionUpdateThread {