diff --git a/platform/non-modal-welcome-screen/src/com/intellij/platform/ide/nonModalWelcomeScreen/leftPanel/WelcomeScreenLeftPanel.kt b/platform/non-modal-welcome-screen/src/com/intellij/platform/ide/nonModalWelcomeScreen/leftPanel/WelcomeScreenLeftPanel.kt index 32111980b12d..1e751c5ccef0 100644 --- a/platform/non-modal-welcome-screen/src/com/intellij/platform/ide/nonModalWelcomeScreen/leftPanel/WelcomeScreenLeftPanel.kt +++ b/platform/non-modal-welcome-screen/src/com/intellij/platform/ide/nonModalWelcomeScreen/leftPanel/WelcomeScreenLeftPanel.kt @@ -136,7 +136,7 @@ class WelcomeScreenLeftPanel(private val project: Project) : ProjectViewPane(pro treeBackground = null ).apply { tree.emptyText.text = NonModalWelcomeScreenBundle.message("welcome.screen.no.recent.projects") - selectLastOpenedProject() + selectLastOpenedProjectOrTheFirstInTree() } private fun createProjectSearchField(recentProjectTree: RecentProjectFilteringTree): SearchTextField = diff --git a/platform/platform-impl/src/com/intellij/openapi/wm/impl/welcomeScreen/recentProjects/RecentProjectFilteringTree.kt b/platform/platform-impl/src/com/intellij/openapi/wm/impl/welcomeScreen/recentProjects/RecentProjectFilteringTree.kt index 3cef47e811d4..7f7cf1220ea6 100644 --- a/platform/platform-impl/src/com/intellij/openapi/wm/impl/welcomeScreen/recentProjects/RecentProjectFilteringTree.kt +++ b/platform/platform-impl/src/com/intellij/openapi/wm/impl/welcomeScreen/recentProjects/RecentProjectFilteringTree.kt @@ -189,9 +189,12 @@ class RecentProjectFilteringTree( } } - fun selectLastOpenedProject() { + /** + * @return true if the last opened project was selected + */ + fun selectLastOpenedProject(): Boolean { val recentProjectsManager = RecentProjectsManagerBase.getInstanceEx() - val projectPath = recentProjectsManager.getLastOpenedProject() ?: return + val projectPath = recentProjectsManager.getLastOpenedProject() ?: return false val node = TreeUtil.findNode(root, Condition { when (val item = TreeUtil.getUserObject(RecentProjectTreeItem::class.java, it)) { @@ -203,7 +206,23 @@ class RecentProjectFilteringTree( if (node != null) { TreeUtil.selectNode(tree, node) + return true } + return false + } + + @ApiStatus.Internal + fun selectLastOpenedProjectOrTheFirstInTree(): Boolean { + if (selectLastOpenedProject()) { + return true + } + + val firstChild = root.firstChild + if (firstChild != null) { + TreeUtil.selectNode(tree, firstChild) + return true + } + return false } private class ProjectActionMouseListener(