From 54fabc098c4a030dc4e3414305cbabbeb4770464 Mon Sep 17 00:00:00 2001 From: peter Date: Tue, 20 Sep 2016 19:41:12 +0200 Subject: [PATCH] IDEA-160978 'Quick Documentation' doesn't work in modal dialogs --- .../src/com/intellij/psi/PsiDocumentManager.java | 12 ++++++++++-- .../intellij/psi/impl/PsiDocumentManagerBase.java | 6 +++++- .../documentation/DocumentationManager.java | 8 ++++---- .../com/intellij/mock/MockPsiDocumentManager.java | 6 ++++++ 4 files changed, 25 insertions(+), 7 deletions(-) diff --git a/platform/core-api/src/com/intellij/psi/PsiDocumentManager.java b/platform/core-api/src/com/intellij/psi/PsiDocumentManager.java index ebebd55b6313..50ed06b796da 100644 --- a/platform/core-api/src/com/intellij/psi/PsiDocumentManager.java +++ b/platform/core-api/src/com/intellij/psi/PsiDocumentManager.java @@ -15,6 +15,7 @@ */ package com.intellij.psi; +import com.intellij.openapi.application.ModalityState; import com.intellij.openapi.editor.Document; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.Computable; @@ -249,9 +250,16 @@ public abstract class PsiDocumentManager { public abstract boolean performWhenAllCommitted(@NotNull Runnable action); /** - * Schedule the runnable to be executed on Swing thread when all the documents are committed at some later moment. + * Same as {@link #performLaterWhenAllCommitted(Runnable, ModalityState)} using {@link ModalityState#defaultModalityState()} + */ + public abstract void performLaterWhenAllCommitted(@NotNull Runnable runnable); + + /** + * Schedule the runnable to be executed on Swing thread when all the documents are committed at some later moment in a given modality state. * The runnable is guaranteed to be invoked when no write action is running, and not immediately. * If the project is disposed before such moment, the runnable is not run. */ - public abstract void performLaterWhenAllCommitted(@NotNull Runnable runnable); + public abstract void performLaterWhenAllCommitted(@NotNull Runnable runnable, ModalityState modalityState); + + } diff --git a/platform/core-impl/src/com/intellij/psi/impl/PsiDocumentManagerBase.java b/platform/core-impl/src/com/intellij/psi/impl/PsiDocumentManagerBase.java index 12eb989a997a..605413be5560 100644 --- a/platform/core-impl/src/com/intellij/psi/impl/PsiDocumentManagerBase.java +++ b/platform/core-impl/src/com/intellij/psi/impl/PsiDocumentManagerBase.java @@ -557,7 +557,11 @@ public abstract class PsiDocumentManagerBase extends PsiDocumentManager implemen @Override public void performLaterWhenAllCommitted(@NotNull final Runnable runnable) { - final ModalityState modalityState = ModalityState.defaultModalityState(); + performLaterWhenAllCommitted(runnable, ModalityState.defaultModalityState()); + } + + @Override + public void performLaterWhenAllCommitted(@NotNull final Runnable runnable, final ModalityState modalityState) { final Runnable whenAllCommitted = new Runnable() { @Override public void run() { diff --git a/platform/lang-impl/src/com/intellij/codeInsight/documentation/DocumentationManager.java b/platform/lang-impl/src/com/intellij/codeInsight/documentation/DocumentationManager.java index 35528de07d28..3dc5f6e8b655 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/documentation/DocumentationManager.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/documentation/DocumentationManager.java @@ -35,6 +35,7 @@ import com.intellij.lang.documentation.*; import com.intellij.openapi.actionSystem.*; import com.intellij.openapi.actionSystem.ex.AnActionListener; import com.intellij.openapi.application.ApplicationManager; +import com.intellij.openapi.application.ModalityState; import com.intellij.openapi.command.CommandProcessor; import com.intellij.openapi.components.ServiceManager; import com.intellij.openapi.diagnostic.Logger; @@ -63,8 +64,6 @@ import com.intellij.ui.popup.AbstractPopup; import com.intellij.ui.popup.PopupPositionManager; import com.intellij.ui.popup.PopupUpdateProcessor; import com.intellij.util.Alarm; -import com.intellij.util.BooleanFunction; -import com.intellij.util.Consumer; import com.intellij.util.Processor; import com.intellij.util.containers.ContainerUtil; import com.intellij.util.ui.accessibility.AccessibleContextUtil; @@ -77,7 +76,6 @@ import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; -import java.awt.event.KeyEvent; import java.lang.ref.WeakReference; import java.util.*; import java.util.List; @@ -711,6 +709,8 @@ public class DocumentationManager extends DockablePopupManager { if (myProject.isDisposed()) return; LOG.debug("Started fetching documentation..."); @@ -777,7 +777,7 @@ public class DocumentationManager extends DockablePopupManager