From 7523e6da8a668f75f42d1328261b459c6f4fa0f0 Mon Sep 17 00:00:00 2001 From: Ilia Zakoulov Date: Fri, 31 Oct 2025 15:43:30 +0100 Subject: [PATCH] GO-19393: Select the first node in the tree of the recent projects The recent projects of non-modal welcome screen does not contain the current project, which is actually the recent one. So instead, we should select the first visible node. GitOrigin-RevId: 4a47f7a64bbee41042e4193cc265358e9a1f1148 --- .../leftPanel/WelcomeScreenLeftPanel.kt | 2 +- .../RecentProjectFilteringTree.kt | 23 +++++++++++++++++-- 2 files changed, 22 insertions(+), 3 deletions(-) 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(