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
This commit is contained in:
Ilia Zakoulov
2025-11-04 19:27:41 +00:00
committed by intellij-monorepo-bot
parent 8114ac6bef
commit 7523e6da8a
2 changed files with 22 additions and 3 deletions
@@ -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 =
@@ -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(