From d58df0119661c00c33579369d3e21decf15f7a01 Mon Sep 17 00:00:00 2001 From: "Gregory.Shrago" Date: Tue, 5 Jul 2022 13:49:06 +0300 Subject: [PATCH] set action-update-thread for documentation actions GitOrigin-RevId: 476107195273d953ccc32040ae3a25c79d4fa1d8 --- .../ide/actions/AdjustFontSizeAction.kt | 3 +++ .../ide/actions/DocumentationBackAction.kt | 3 +++ .../ide/actions/DocumentationForwardAction.kt | 3 +++ .../DocumentationViewExternalAction.kt | 14 +++------- .../ide/actions/ToggleAutoShowAction.kt | 3 +++ .../lang/documentation/ide/actions/actions.kt | 26 +------------------ 6 files changed, 17 insertions(+), 35 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/lang/documentation/ide/actions/AdjustFontSizeAction.kt b/platform/lang-impl/src/com/intellij/lang/documentation/ide/actions/AdjustFontSizeAction.kt index 73d2e9699cd6..f5423d85c651 100644 --- a/platform/lang-impl/src/com/intellij/lang/documentation/ide/actions/AdjustFontSizeAction.kt +++ b/platform/lang-impl/src/com/intellij/lang/documentation/ide/actions/AdjustFontSizeAction.kt @@ -3,6 +3,7 @@ package com.intellij.lang.documentation.ide.actions import com.intellij.codeInsight.CodeInsightBundle import com.intellij.codeInsight.hint.HintManagerImpl.ActionToIgnore +import com.intellij.openapi.actionSystem.ActionUpdateThread import com.intellij.openapi.actionSystem.AnAction import com.intellij.openapi.actionSystem.AnActionEvent import com.intellij.openapi.project.DumbAware @@ -10,6 +11,8 @@ import com.intellij.ui.showFontSizePopup internal class AdjustFontSizeAction : AnAction(CodeInsightBundle.message("javadoc.adjust.font.size")), ActionToIgnore, DumbAware { + override fun getActionUpdateThread(): ActionUpdateThread = ActionUpdateThread.BGT + override fun update(e: AnActionEvent) { e.presentation.isEnabledAndVisible = documentationBrowser(e.dataContext) != null } diff --git a/platform/lang-impl/src/com/intellij/lang/documentation/ide/actions/DocumentationBackAction.kt b/platform/lang-impl/src/com/intellij/lang/documentation/ide/actions/DocumentationBackAction.kt index 5b5bf5088586..085c990af9c1 100644 --- a/platform/lang-impl/src/com/intellij/lang/documentation/ide/actions/DocumentationBackAction.kt +++ b/platform/lang-impl/src/com/intellij/lang/documentation/ide/actions/DocumentationBackAction.kt @@ -2,11 +2,14 @@ package com.intellij.lang.documentation.ide.actions import com.intellij.codeInsight.hint.HintManagerImpl.ActionToIgnore +import com.intellij.openapi.actionSystem.ActionUpdateThread import com.intellij.openapi.actionSystem.AnAction import com.intellij.openapi.actionSystem.AnActionEvent internal class DocumentationBackAction : AnAction(), ActionToIgnore { + override fun getActionUpdateThread(): ActionUpdateThread = ActionUpdateThread.EDT + override fun update(e: AnActionEvent) { e.presentation.isEnabled = documentationHistory(e.dataContext)?.canBackward() == true } diff --git a/platform/lang-impl/src/com/intellij/lang/documentation/ide/actions/DocumentationForwardAction.kt b/platform/lang-impl/src/com/intellij/lang/documentation/ide/actions/DocumentationForwardAction.kt index 8b98e2ca9425..314f655f6950 100644 --- a/platform/lang-impl/src/com/intellij/lang/documentation/ide/actions/DocumentationForwardAction.kt +++ b/platform/lang-impl/src/com/intellij/lang/documentation/ide/actions/DocumentationForwardAction.kt @@ -2,11 +2,14 @@ package com.intellij.lang.documentation.ide.actions import com.intellij.codeInsight.hint.HintManagerImpl.ActionToIgnore +import com.intellij.openapi.actionSystem.ActionUpdateThread import com.intellij.openapi.actionSystem.AnAction import com.intellij.openapi.actionSystem.AnActionEvent internal class DocumentationForwardAction : AnAction(), ActionToIgnore { + override fun getActionUpdateThread(): ActionUpdateThread = ActionUpdateThread.EDT + override fun update(e: AnActionEvent) { e.presentation.isEnabled = documentationHistory(e.dataContext)?.canForward() == true } diff --git a/platform/lang-impl/src/com/intellij/lang/documentation/ide/actions/DocumentationViewExternalAction.kt b/platform/lang-impl/src/com/intellij/lang/documentation/ide/actions/DocumentationViewExternalAction.kt index 20a7ddcba0d1..432c7f09fe56 100644 --- a/platform/lang-impl/src/com/intellij/lang/documentation/ide/actions/DocumentationViewExternalAction.kt +++ b/platform/lang-impl/src/com/intellij/lang/documentation/ide/actions/DocumentationViewExternalAction.kt @@ -2,28 +2,22 @@ package com.intellij.lang.documentation.ide.actions import com.intellij.codeInsight.hint.HintManagerImpl.ActionToIgnore -import com.intellij.lang.documentation.ide.impl.DocumentationBrowser import com.intellij.lang.documentation.ide.impl.openUrl +import com.intellij.openapi.actionSystem.ActionUpdateThread import com.intellij.openapi.actionSystem.AnAction import com.intellij.openapi.actionSystem.AnActionEvent -import com.intellij.openapi.actionSystem.DataContext internal class DocumentationViewExternalAction : AnAction(), ActionToIgnore { - /** - * TODO consider exposing [DocumentationBrowser.currentExternalUrl] - * in [com.intellij.lang.documentation.ide.DocumentationBrowserFacade] - * to get rid of the cast - */ - private fun browser(dc: DataContext): DocumentationBrowser? = dc.getData(DOCUMENTATION_BROWSER) as? DocumentationBrowser + override fun getActionUpdateThread(): ActionUpdateThread = ActionUpdateThread.BGT override fun update(e: AnActionEvent) { - e.presentation.isEnabledAndVisible = browser(e.dataContext)?.currentExternalUrl() != null + e.presentation.isEnabledAndVisible = documentationBrowser(e.dataContext)?.currentExternalUrl() != null } override fun actionPerformed(e: AnActionEvent) { val project = e.project ?: return - val browser = browser(e.dataContext) ?: return + val browser = documentationBrowser(e.dataContext) ?: return val url = browser.currentExternalUrl() ?: return openUrl(project, browser.targetPointer, url) } diff --git a/platform/lang-impl/src/com/intellij/lang/documentation/ide/actions/ToggleAutoShowAction.kt b/platform/lang-impl/src/com/intellij/lang/documentation/ide/actions/ToggleAutoShowAction.kt index 807b1e5cf424..755b1d3084dc 100644 --- a/platform/lang-impl/src/com/intellij/lang/documentation/ide/actions/ToggleAutoShowAction.kt +++ b/platform/lang-impl/src/com/intellij/lang/documentation/ide/actions/ToggleAutoShowAction.kt @@ -4,11 +4,14 @@ package com.intellij.lang.documentation.ide.actions import com.intellij.codeInsight.CodeInsightSettings import com.intellij.codeInsight.hint.HintManagerImpl.ActionToIgnore import com.intellij.codeInsight.lookup.LookupManager +import com.intellij.openapi.actionSystem.ActionUpdateThread import com.intellij.openapi.actionSystem.AnActionEvent import com.intellij.openapi.actionSystem.ToggleAction internal class ToggleAutoShowAction : ToggleAction(), ActionToIgnore { + override fun getActionUpdateThread(): ActionUpdateThread = ActionUpdateThread.EDT + override fun update(e: AnActionEvent) { val project = e.project val visible = project != null && LookupManager.getInstance(project).activeLookup != null diff --git a/platform/lang-impl/src/com/intellij/lang/documentation/ide/actions/actions.kt b/platform/lang-impl/src/com/intellij/lang/documentation/ide/actions/actions.kt index 9a92e9d3e466..1a0e959da4f7 100644 --- a/platform/lang-impl/src/com/intellij/lang/documentation/ide/actions/actions.kt +++ b/platform/lang-impl/src/com/intellij/lang/documentation/ide/actions/actions.kt @@ -9,9 +9,6 @@ import com.intellij.lang.documentation.ide.DocumentationBrowserFacade import com.intellij.lang.documentation.ide.IdeDocumentationTargetProvider import com.intellij.lang.documentation.ide.impl.DocumentationBrowser import com.intellij.lang.documentation.ide.impl.DocumentationHistory -import com.intellij.lang.documentation.ide.impl.DocumentationToolWindowManager -import com.intellij.lang.documentation.ide.ui.DocumentationToolWindowUI -import com.intellij.lang.documentation.ide.ui.toolWindowUI import com.intellij.lang.documentation.psi.psiDocumentationTarget import com.intellij.lang.documentation.symbol.impl.symbolDocumentationTargets import com.intellij.openapi.actionSystem.* @@ -20,7 +17,6 @@ import com.intellij.openapi.editor.Editor import com.intellij.openapi.keymap.KeymapUtil import com.intellij.openapi.project.Project import com.intellij.openapi.ui.popup.JBPopup -import com.intellij.openapi.wm.impl.content.BaseLabel import com.intellij.psi.util.PsiUtilBase import com.intellij.util.containers.ContainerUtil import com.intellij.util.ui.accessibility.ScreenReader @@ -105,25 +101,5 @@ internal fun documentationHistory(dc: DataContext): DocumentationHistory? { } internal fun documentationBrowser(dc: DataContext): DocumentationBrowser? { - val browser = dc.getData(DOCUMENTATION_BROWSER) - if (browser != null) { - return browser as DocumentationBrowser - } - return documentationToolWindowUI(dc)?.browser -} - -internal fun documentationToolWindowUI(dc: DataContext): DocumentationToolWindowUI? { - val toolWindow = dc.getData(PlatformDataKeys.TOOL_WINDOW) - ?: return null - if (toolWindow.id != DocumentationToolWindowManager.TOOL_WINDOW_ID) { - return null - } - val component = dc.getData(PlatformCoreDataKeys.CONTEXT_COMPONENT) - val content = if (component is BaseLabel) { - component.content - } - else { - toolWindow.contentManager.selectedContent - } - return content?.toolWindowUI + return dc.getData(DOCUMENTATION_BROWSER) as? DocumentationBrowser }