diff --git a/src/main/kotlin/com/chylex/intellij/keyboardmaster/feature/vimNavigation/PopupInterceptor.kt b/src/main/kotlin/com/chylex/intellij/keyboardmaster/feature/vimNavigation/PopupInterceptor.kt index cd2ad22..189ced8 100644 --- a/src/main/kotlin/com/chylex/intellij/keyboardmaster/feature/vimNavigation/PopupInterceptor.kt +++ b/src/main/kotlin/com/chylex/intellij/keyboardmaster/feature/vimNavigation/PopupInterceptor.kt @@ -8,7 +8,7 @@ import com.intellij.ui.popup.list.ListPopupImpl internal object PopupInterceptor : PersistentUiInterceptor<AbstractPopup>(AbstractPopup::class.java) { override fun shouldIntercept(component: AbstractPopup): Boolean { - if (component is ListPopupImpl) { + if (component is ListPopupImpl && VimNavigation.isEnabled) { VimListNavigation.install(component.list, component) } diff --git a/src/main/kotlin/com/chylex/intellij/keyboardmaster/feature/vimNavigation/VimNavigation.kt b/src/main/kotlin/com/chylex/intellij/keyboardmaster/feature/vimNavigation/VimNavigation.kt index 2ef3e6a..19e33fb 100644 --- a/src/main/kotlin/com/chylex/intellij/keyboardmaster/feature/vimNavigation/VimNavigation.kt +++ b/src/main/kotlin/com/chylex/intellij/keyboardmaster/feature/vimNavigation/VimNavigation.kt @@ -18,9 +18,12 @@ import javax.swing.KeyStroke import javax.swing.UIManager object VimNavigation { - private val isEnabled = AtomicBoolean(false) + private val isEnabledFlag = AtomicBoolean(false) private var originalPopupBindings: Array<*>? = null + val isEnabled + get() = isEnabledFlag.get() + fun register() { val disposable = ApplicationManager.getApplication().getService(PluginDisposableService::class.java) @@ -29,7 +32,7 @@ object VimNavigation { } fun setEnabled(enabled: Boolean) { - if (!isEnabled.compareAndSet(!enabled, enabled)) { + if (!isEnabledFlag.compareAndSet(!enabled, enabled)) { return } @@ -61,7 +64,7 @@ object VimNavigation { } private fun handleEvent(event: AWTEvent) { - if (event is FocusEvent && event.id == FocusEvent.FOCUS_GAINED && isEnabled.get()) { + if (event is FocusEvent && event.id == FocusEvent.FOCUS_GAINED && isEnabled) { when (val source = event.source) { is JList<*> -> VimListNavigation.install(source) is JTree -> VimTreeNavigation.install(source)