From e9d019b28b7382d25084a76558f5d22c69a23a97 Mon Sep 17 00:00:00 2001 From: Ivan Semenov Date: Sat, 6 Jun 2020 19:43:44 +0300 Subject: [PATCH] [github] Auto-selection and selection preservation for PR changes trees GitOrigin-RevId: 8754554dd29970a391923792e84d89b5b47a4d98 --- .../github/pullrequest/ui/changes/GHPRChangesTree.kt | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/plugins/github/src/org/jetbrains/plugins/github/pullrequest/ui/changes/GHPRChangesTree.kt b/plugins/github/src/org/jetbrains/plugins/github/pullrequest/ui/changes/GHPRChangesTree.kt index a8e7fbc59561..913247a75a55 100644 --- a/plugins/github/src/org/jetbrains/plugins/github/pullrequest/ui/changes/GHPRChangesTree.kt +++ b/plugins/github/src/org/jetbrains/plugins/github/pullrequest/ui/changes/GHPRChangesTree.kt @@ -4,6 +4,7 @@ package org.jetbrains.plugins.github.pullrequest.ui.changes import com.intellij.openapi.project.Project import com.intellij.openapi.vcs.changes.ui.ChangesTree import com.intellij.openapi.vcs.changes.ui.VcsTreeModelData +import com.intellij.ui.SelectionSaver import com.intellij.ui.components.JBPanelWithEmptyText import com.intellij.util.ui.tree.TreeUtil import java.awt.BorderLayout @@ -15,9 +16,15 @@ object GHPRChangesTree { fun create(project: Project, model: GHPRChangesModel): ChangesTree { val tree = object : ChangesTree(project, false, false) { - override fun rebuildTree() = updateTreeModel(model.buildChangesTree(grouping)) + override fun rebuildTree() { + updateTreeModel(model.buildChangesTree(grouping)) + if (isSelectionEmpty && !isEmpty) TreeUtil.selectFirstNode(this) + } + override fun getData(dataId: String) = super.getData(dataId) ?: VcsTreeModelData.getData(project, this, dataId) + }.also { + SelectionSaver.installOn(it) it.addFocusListener(object : FocusAdapter() { override fun focusGained(e: FocusEvent?) { if (it.isSelectionEmpty && !it.isEmpty) TreeUtil.selectFirstNode(it)