Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Keppler2019-07-08 18:43:33 +0000
committerMichael Keppler2019-08-20 13:44:25 +0000
commit2353ea858e20fb5df2b950659049dae43bdd76f3 (patch)
tree1a7e548039b8a17ac250384ebe4f75ea45eaebd2
parent88ea3acf4878360f7b9cae6614a122579b316f7f (diff)
downloadegit-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.java23
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;
}

Back to the top