mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
require editors top be opened/closed in write-safe contexts (IDEA-164464, EA-104751, EA-94233)
This commit is contained in:
@@ -22,6 +22,8 @@ import com.intellij.openapi.actionSystem.CommonDataKeys;
|
||||
import com.intellij.openapi.actionSystem.DataKey;
|
||||
import com.intellij.openapi.actionSystem.DataProvider;
|
||||
import com.intellij.openapi.application.ApplicationManager;
|
||||
import com.intellij.openapi.application.TransactionGuard;
|
||||
import com.intellij.openapi.application.TransactionGuardImpl;
|
||||
import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.openapi.editor.Editor;
|
||||
import com.intellij.openapi.editor.ScrollType;
|
||||
@@ -286,6 +288,8 @@ public class EditorWindow {
|
||||
finally {
|
||||
editorManager.removeSelectionRecord(file, this);
|
||||
|
||||
((TransactionGuardImpl)TransactionGuard.getInstance()).assertWriteActionAllowed();
|
||||
|
||||
editorManager.notifyPublisher(() -> {
|
||||
final Project project = editorManager.getProject();
|
||||
if (!project.isDisposed()) {
|
||||
@@ -1194,6 +1198,8 @@ public class EditorWindow {
|
||||
}
|
||||
|
||||
public void clear() {
|
||||
((TransactionGuardImpl)TransactionGuard.getInstance()).assertWriteActionAllowed();
|
||||
|
||||
FileEditorManagerImpl manager = getManager();
|
||||
FileEditorManagerListener.Before beforePublisher =
|
||||
manager.getProject().getMessageBus().syncPublisher(FileEditorManagerListener.Before.FILE_EDITOR_MANAGER);
|
||||
|
||||
+4
-5
@@ -23,9 +23,7 @@ import com.intellij.ide.ui.UISettings;
|
||||
import com.intellij.ide.ui.UISettingsListener;
|
||||
import com.intellij.injected.editor.VirtualFileWindow;
|
||||
import com.intellij.openapi.Disposable;
|
||||
import com.intellij.openapi.application.ApplicationManager;
|
||||
import com.intellij.openapi.application.ModalityState;
|
||||
import com.intellij.openapi.application.ReadAction;
|
||||
import com.intellij.openapi.application.*;
|
||||
import com.intellij.openapi.application.ex.ApplicationManagerEx;
|
||||
import com.intellij.openapi.command.CommandProcessor;
|
||||
import com.intellij.openapi.components.PersistentStateComponent;
|
||||
@@ -845,6 +843,7 @@ public class FileEditorManagerImpl extends FileEditorManagerEx implements Persis
|
||||
}
|
||||
|
||||
HeavyProcessLatch.INSTANCE.prioritizeUiActivity();
|
||||
((TransactionGuardImpl)TransactionGuard.getInstance()).assertWriteActionAllowed();
|
||||
|
||||
compositeRef.set(window.findFileComposite(file));
|
||||
boolean newEditor = compositeRef.isNull();
|
||||
@@ -956,7 +955,7 @@ public class FileEditorManagerImpl extends FileEditorManagerEx implements Persis
|
||||
}
|
||||
};
|
||||
|
||||
UIUtil.invokeAndWaitIfNeeded(runnable);
|
||||
ApplicationManager.getApplication().invokeAndWait(runnable);
|
||||
|
||||
EditorWithProviderComposite composite = compositeRef.get();
|
||||
return Pair.create(composite == null ? EMPTY_EDITOR_ARRAY : composite.getEditors(),
|
||||
@@ -1031,7 +1030,7 @@ public class FileEditorManagerImpl extends FileEditorManagerEx implements Persis
|
||||
runnable.run();
|
||||
done.setDone();
|
||||
}
|
||||
});
|
||||
}, ModalityState.current());
|
||||
return done;
|
||||
}
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user