fix(gui): split tabs loading to prevent ui dead lock
This commit is contained in:
@@ -532,9 +532,11 @@ public class MainWindow extends JFrame {
|
||||
updateLiveReload(project.isEnableLiveReload());
|
||||
BreakpointManager.init(project.getFilePaths().get(0).toAbsolutePath().getParent());
|
||||
|
||||
List<EditorViewState> openTabs = project.getOpenTabs(this);
|
||||
backgroundExecutor.execute(NLS.str("progress.load"),
|
||||
this::restoreOpenTabs,
|
||||
() -> preLoadOpenTabs(openTabs),
|
||||
status -> {
|
||||
restoreOpenTabs(openTabs);
|
||||
runInitialBackgroundJobs();
|
||||
notifyLoadListeners(true);
|
||||
});
|
||||
@@ -1503,8 +1505,8 @@ public class MainWindow extends JFrame {
|
||||
project.saveOpenTabs(tabbedPane.getEditorViewStates(), tabbedPane.getSelectedIndex());
|
||||
}
|
||||
|
||||
private void restoreOpenTabs() {
|
||||
List<EditorViewState> openTabs = project.getOpenTabs(this);
|
||||
private void restoreOpenTabs(List<EditorViewState> openTabs) {
|
||||
UiUtils.uiThreadGuard();
|
||||
if (openTabs.isEmpty()) {
|
||||
return;
|
||||
}
|
||||
@@ -1518,6 +1520,18 @@ public class MainWindow extends JFrame {
|
||||
}
|
||||
}
|
||||
|
||||
private void preLoadOpenTabs(List<EditorViewState> openTabs) {
|
||||
UiUtils.notUiThreadGuard();
|
||||
for (EditorViewState tabState : openTabs) {
|
||||
JNode node = tabState.getNode();
|
||||
try {
|
||||
node.getCodeInfo();
|
||||
} catch (Exception e) {
|
||||
LOG.warn("Failed to preload code for node: {}", node, e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void saveSplittersInfo() {
|
||||
settings.setMainWindowVerticalSplitterLoc(verticalSplitter.getDividerLocation());
|
||||
settings.setDebuggerStackFrameSplitterLoc(debuggerPanel.getLeftSplitterLocation());
|
||||
|
||||
Reference in New Issue
Block a user