mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IDEA-160978 'Quick Documentation' doesn't work in modal dialogs
This commit is contained in:
@@ -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);
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -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() {
|
||||
|
||||
+4
-4
@@ -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<DocumentationComp
|
||||
}
|
||||
}
|
||||
|
||||
ModalityState modality = ModalityState.defaultModalityState();
|
||||
|
||||
myUpdateDocAlarm.addRequest(() -> {
|
||||
if (myProject.isDisposed()) return;
|
||||
LOG.debug("Started fetching documentation...");
|
||||
@@ -777,7 +777,7 @@ public class DocumentationManager extends DockablePopupManager<DocumentationComp
|
||||
// Set panel name so that it is announced by readers when it gets the focus
|
||||
AccessibleContextUtil.setName(component, getTitle(element, false));
|
||||
callback.setDone();
|
||||
});
|
||||
}, modality);
|
||||
}, 10);
|
||||
return callback;
|
||||
}
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
*/
|
||||
package com.intellij.mock;
|
||||
|
||||
import com.intellij.openapi.application.ModalityState;
|
||||
import com.intellij.openapi.editor.Document;
|
||||
import com.intellij.openapi.fileEditor.FileDocumentManager;
|
||||
import com.intellij.openapi.util.Computable;
|
||||
@@ -139,4 +140,9 @@ public class MockPsiDocumentManager extends PsiDocumentManager {
|
||||
public void performLaterWhenAllCommitted(@NotNull final Runnable runnable) {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void performLaterWhenAllCommitted(@NotNull Runnable runnable, ModalityState modalityState) {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user