mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
PY-86523: Check if contentManager is initialized before trying to change view.
This method might be called too early causing NPE inside `getContentManager`. Space-RevId: 74e62c8d1f413422512a4f676e8b9086e04f2b81 GitOrigin-RevId: 638e0e4b433d365acf81c9853f0f93805f1db612
This commit is contained in:
committed by
intellij-monorepo-bot
parent
5b621729f3
commit
0bbfd42888
@@ -24,6 +24,7 @@ jvm_library(
|
||||
"//platform/core-ui",
|
||||
"//platform/project/shared:project",
|
||||
"//fleet/rpc",
|
||||
"//platform/platform-impl:ide-impl",
|
||||
],
|
||||
plugins = ["@lib//:compose-plugin"]
|
||||
)
|
||||
|
||||
+1
@@ -43,5 +43,6 @@
|
||||
<orderEntry type="module" module-name="intellij.platform.core.ui" />
|
||||
<orderEntry type="module" module-name="intellij.platform.project" />
|
||||
<orderEntry type="module" module-name="fleet.rpc" />
|
||||
<orderEntry type="module" module-name="intellij.platform.ide.impl" />
|
||||
</component>
|
||||
</module>
|
||||
@@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user