From 9d2c98a2e2a7cac1e126ea2a634e2234a45ce760 Mon Sep 17 00:00:00 2001 From: Konstantin Kolosovsky Date: Mon, 29 Jan 2018 12:34:13 +0300 Subject: [PATCH] Fix "toggle popup" behavior when clicking on option button arrow part --- .../src/com/intellij/ui/components/BasicOptionButtonUI.kt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/platform/platform-impl/src/com/intellij/ui/components/BasicOptionButtonUI.kt b/platform/platform-impl/src/com/intellij/ui/components/BasicOptionButtonUI.kt index 869e2ed9e1ca..06f23799452c 100644 --- a/platform/platform-impl/src/com/intellij/ui/components/BasicOptionButtonUI.kt +++ b/platform/platform-impl/src/com/intellij/ui/components/BasicOptionButtonUI.kt @@ -7,6 +7,7 @@ import com.intellij.icons.AllIcons import com.intellij.ide.DataManager import com.intellij.openapi.Disposable import com.intellij.openapi.actionSystem.* +import com.intellij.openapi.application.ApplicationManager.getApplication import com.intellij.openapi.project.DumbAwareAction import com.intellij.openapi.ui.DialogWrapperButtonLayout.Companion.EXTRA_WIDTH_KEY import com.intellij.openapi.ui.OptionAction @@ -226,7 +227,8 @@ open class BasicOptionButtonUI : OptionButtonUI() { if (!isSimpleButton) { isPopupShowing = true popup = createPopup(toSelect, ensureSelection).apply { - setFinalRunnable { isPopupShowing = false } + // use invokeLater() to update flag "after" popup is auto-closed - to ensure correct togglePopup() behaviour on arrow button press + setFinalRunnable { getApplication().invokeLater { isPopupShowing = false } } addListener(object : JBPopupAdapter() { override fun beforeShown(event: LightweightWindowEvent) { val popup = event.asPopup()