diff options
author | Michael Keppler | 2019-09-09 08:52:51 +0000 |
---|---|---|
committer | Michael Keppler | 2019-09-17 17:25:52 +0000 |
commit | ac7b3e44c785ab6a0873d8c7281bfc7ef6dfb665 (patch) | |
tree | b81e0094e1cfcf70b8ffa10ebe849c4416a49108 /org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal | |
parent | 290a3e0f3de3b9906ca1943feef8272781aa3f11 (diff) | |
download | egit-ac7b3e44c785ab6a0873d8c7281bfc7ef6dfb665.tar.gz egit-ac7b3e44c785ab6a0873d8c7281bfc7ef6dfb665.tar.xz egit-ac7b3e44c785ab6a0873d8c7281bfc7ef6dfb665.zip |
Match full branch names in branch selection dialog
With hierarchical branch layout enabled, the filter in the branch
selection dialog doesn't match when entering something like
"origin/master" due to each node only having one part of the ref name as
label.
Bug:550886
Change-Id: I49153b0aa06c7c7af6171494fb5cef608f5bb108
Signed-off-by: Michael Keppler <Michael.Keppler@gmx.de>
Diffstat (limited to 'org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal')
-rw-r--r-- | org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/dialogs/AbstractBranchSelectionDialog.java | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/dialogs/AbstractBranchSelectionDialog.java b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/dialogs/AbstractBranchSelectionDialog.java index a116daaea5..9ddd02914f 100644 --- a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/dialogs/AbstractBranchSelectionDialog.java +++ b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/dialogs/AbstractBranchSelectionDialog.java @@ -51,6 +51,7 @@ import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.viewers.SelectionChangedEvent; import org.eclipse.jface.viewers.StructuredSelection; import org.eclipse.jface.viewers.TreeViewer; +import org.eclipse.jface.viewers.Viewer; import org.eclipse.jface.viewers.ViewerComparator; import org.eclipse.jface.window.Window; import org.eclipse.jgit.lib.BranchConfig; @@ -76,6 +77,25 @@ import org.eclipse.ui.dialogs.PatternFilter; public abstract class AbstractBranchSelectionDialog extends TitleAreaDialog { /** + * Filter refs by their label or by their full name (with hierarchical + * layout enabled, the node label is only the last part of the ref name). + */ + private static final class RefNamePatternFilter extends PatternFilter { + @Override + protected boolean isLeafMatch(Viewer viewer, Object element) { + if (super.isLeafMatch(viewer, element)) { + return true; + } + if (element instanceof RefNode) { + String branchName = ((RefNode) element).getObject() + .getName(); + return wordMatches(branchName); + } + return false; + } + } + + /** * Get the target merge ref name for the currently checkout branch * * @param repo @@ -273,7 +293,7 @@ public abstract class AbstractBranchSelectionDialog extends TitleAreaDialog { } else { selectionModel = SWT.SINGLE; } - PatternFilter filter = new PatternFilter(); + PatternFilter filter = new RefNamePatternFilter(); filter.setIncludeLeadingWildcard(true); FilteredTree tree = new FilteredTree(composite, selectionModel | SWT.BORDER, filter, true); |