diff --git a/platform/non-modal-welcome-screen/frontend/BUILD.bazel b/platform/non-modal-welcome-screen/frontend/BUILD.bazel index a79f124d7a01..020b939e478b 100644 --- a/platform/non-modal-welcome-screen/frontend/BUILD.bazel +++ b/platform/non-modal-welcome-screen/frontend/BUILD.bazel @@ -24,6 +24,7 @@ jvm_library( "//platform/core-ui", "//platform/project/shared:project", "//fleet/rpc", + "//platform/platform-impl:ide-impl", ], plugins = ["@lib//:compose-plugin"] ) diff --git a/platform/non-modal-welcome-screen/frontend/intellij.platform.ide.nonModalWelcomeScreen.frontend.iml b/platform/non-modal-welcome-screen/frontend/intellij.platform.ide.nonModalWelcomeScreen.frontend.iml index 29addfae31f8..dc02b89bd6a7 100644 --- a/platform/non-modal-welcome-screen/frontend/intellij.platform.ide.nonModalWelcomeScreen.frontend.iml +++ b/platform/non-modal-welcome-screen/frontend/intellij.platform.ide.nonModalWelcomeScreen.frontend.iml @@ -43,5 +43,6 @@ + \ No newline at end of file diff --git a/platform/non-modal-welcome-screen/frontend/src/WelcomeScreenLeftTabListener.kt b/platform/non-modal-welcome-screen/frontend/src/WelcomeScreenLeftTabListener.kt index ccd0a82a17c9..edc34a08e3ac 100644 --- a/platform/non-modal-welcome-screen/frontend/src/WelcomeScreenLeftTabListener.kt +++ b/platform/non-modal-welcome-screen/frontend/src/WelcomeScreenLeftTabListener.kt @@ -5,8 +5,11 @@ import com.intellij.ide.projectView.impl.ProjectViewImpl import com.intellij.ide.projectView.impl.ProjectViewPane import com.intellij.openapi.fileEditor.FileEditorManagerEvent import com.intellij.openapi.fileEditor.FileEditorManagerListener +import com.intellij.openapi.project.Project import com.intellij.openapi.util.registry.Registry -import com.intellij.platform.ide.nonModalWelcomeScreen.leftPanel.WelcomeScreenLeftPanel.Companion.ID +import com.intellij.openapi.wm.ToolWindowId +import com.intellij.openapi.wm.ToolWindowManager +import com.intellij.platform.ide.nonModalWelcomeScreen.leftPanel.WelcomeScreenLeftPanel import com.intellij.platform.ide.nonModalWelcomeScreen.rightTab.WelcomeScreenRightTabVirtualFile internal class WelcomeScreenLeftTabListener: FileEditorManagerListener { @@ -18,10 +21,20 @@ internal class WelcomeScreenLeftTabListener: FileEditorManagerListener { val isChangedFromWelcome = event.oldFile?.fileType is WelcomeScreenRightTabVirtualFile.WelcomeScreenFileType val project = event.manager.project if (isChangedToWelcome) { - ProjectViewImpl.getInstance(project).changeView(ID) + safeChangeView(project, WelcomeScreenLeftPanel.ID) } else if (isChangedFromWelcome) { - ProjectViewImpl.getInstance(project).changeView(ProjectViewPane.ID) + safeChangeView(project, ProjectViewPane.ID) } } + + private fun safeChangeView(project: Project, viewId: String) { + val canChangeView = ToolWindowManager.getInstance(project).getToolWindow(ToolWindowId.PROJECT_VIEW)?.contentManagerIfCreated != null + if (!canChangeView) { + // `ProjectViewImpl.changeView` expects `contentManager` to be not null. + return + } + + ProjectViewImpl.getInstance(project).changeView(viewId) + } }