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: c12f54e5622d9bbd8d9b3f63c5be1b1c10dff86e
This commit is contained in:
Ilia Zakoulov
2025-11-03 12:20:11 +00:00
committed by intellij-monorepo-bot
parent 51fb56b954
commit 35637e49c6
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 =
@@ -192,9 +192,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)) {
@@ -206,7 +209,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(