diff options
author | Michael Keppler | 2019-07-08 18:43:33 +0000 |
---|---|---|
committer | Michael Keppler | 2019-08-20 13:44:25 +0000 |
commit | 2353ea858e20fb5df2b950659049dae43bdd76f3 (patch) | |
tree | 1a7e548039b8a17ac250384ebe4f75ea45eaebd2 | |
parent | 88ea3acf4878360f7b9cae6614a122579b316f7f (diff) | |
download | egit-2353ea858e20fb5df2b950659049dae43bdd76f3.tar.gz egit-2353ea858e20fb5df2b950659049dae43bdd76f3.tar.xz egit-2353ea858e20fb5df2b950659049dae43bdd76f3.zip |
Suppress history for structural RepositoryTreeNodes
Don't adapt the structural tree nodes of the repository view to history
input. This avoids unwantedly showing the full repository history when
clicking on any of those nodes just for expanding/navigating the tree,
therefore not loosing the history of the previously selected
branch/tag/ref.
Bug:549034
Change-Id: I7761b29f6a33d9fa7b992ec296afba8a60016a70
Signed-off-by: Michael Keppler <Michael.Keppler@gmx.de>
-rw-r--r-- | org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/history/GitHistoryPage.java | 23 |
1 files changed, 18 insertions, 5 deletions
diff --git a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/history/GitHistoryPage.java b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/history/GitHistoryPage.java index 8d5519a5ca..479632c302 100644 --- a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/history/GitHistoryPage.java +++ b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/history/GitHistoryPage.java @@ -24,6 +24,7 @@ import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.Arrays; +import java.util.EnumSet; import java.util.HashSet; import java.util.List; import java.util.Objects; @@ -72,6 +73,7 @@ import org.eclipse.egit.ui.internal.repository.tree.FolderNode; import org.eclipse.egit.ui.internal.repository.tree.RefNode; import org.eclipse.egit.ui.internal.repository.tree.RepositoryNode; import org.eclipse.egit.ui.internal.repository.tree.RepositoryTreeNode; +import org.eclipse.egit.ui.internal.repository.tree.RepositoryTreeNodeType; import org.eclipse.egit.ui.internal.repository.tree.TagNode; import org.eclipse.egit.ui.internal.selection.RepositorySelectionProvider; import org.eclipse.egit.ui.internal.selection.SelectionUtils; @@ -194,6 +196,12 @@ public class GitHistoryPage extends HistoryPage implements RefsChangedListener, private static final String P_REPOSITORY = "GitHistoryPage.Repository"; //$NON-NLS-1$ + private static final EnumSet SUPPORTED_REPOSITORY_NODE_TYPES = EnumSet.of( + RepositoryTreeNodeType.REPO, RepositoryTreeNodeType.REF, + RepositoryTreeNodeType.ADDITIONALREF, RepositoryTreeNodeType.TAG, + RepositoryTreeNodeType.FOLDER, RepositoryTreeNodeType.FILE, + RepositoryTreeNodeType.WORKINGDIR); + /** actions used in GitHistoryPage **/ private static class GitHistoryPageActions { @@ -1015,22 +1023,27 @@ public class GitHistoryPage extends HistoryPage implements RefsChangedListener, * FOLDER or PROJECT and we can show it; false otherwise. */ public static boolean canShowHistoryFor(final Object object) { - if (object instanceof HistoryPageInput) + if (object instanceof HistoryPageInput) { return true; + } - if (object instanceof IResource) + if (object instanceof IResource) { return typeOk((IResource) object); + } - if (object instanceof RepositoryTreeNode) - return true; + if (object instanceof RepositoryTreeNode) { + return SUPPORTED_REPOSITORY_NODE_TYPES + .contains(((RepositoryTreeNode) object).getType()); + } if (object instanceof Path) { return true; } IResource resource = AdapterUtils.adaptToAnyResource(object); - if (resource != null && typeOk(resource)) + if (resource != null && typeOk(resource)) { return true; + } return Adapters.adapt(object, Repository.class) != null; } |