Skip to content

Commit cb34c63

Browse files
committed
Attribute Quick Access perfect match to its actual provider
The perfect-match removal loop in computeMatchingEntries never ran. Its body was guarded by "if (perfectMatchProvider != null)" while that variable starts null and is only assigned inside the guard, making the assignment unreachable. The predicate also tested prevPickIds instead of the perfect match, a leftover copy of the previous-picks removal above. Consequently perfectMatchProvider stayed null, so the pinned perfect match was always attributed to providers[0], and the perfect match was never removed from its provider list (it could appear twice in the show-all-matches view). Find the provider whose elements contain the perfect match, remove it by identity, and record that provider.
1 parent e78dedb commit cb34c63

1 file changed

Lines changed: 5 additions & 6 deletions

File tree

bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/quickaccess/QuickAccessContents.java

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -519,12 +519,11 @@ private List<QuickAccessEntry>[] computeMatchingEntries(String filter, QuickAcce
519519
QuickAccessProvider perfectMatchProvider = null;
520520
if (perfectMatch != null) {
521521
for (Entry<QuickAccessProvider, List<QuickAccessElement>> entry : elementsForProviders.entrySet()) {
522-
if (perfectMatchProvider != null) {
523-
List<QuickAccessElement> filteredElements = new ArrayList<>(entry.getValue());
524-
if (filteredElements.removeIf(element -> prevPickIds.contains(element.getId()))) {
525-
entry.setValue(filteredElements);
526-
perfectMatchProvider = entry.getKey();
527-
}
522+
List<QuickAccessElement> filteredElements = new ArrayList<>(entry.getValue());
523+
if (filteredElements.removeIf(element -> element == perfectMatch)) {
524+
entry.setValue(filteredElements);
525+
perfectMatchProvider = entry.getKey();
526+
break;
528527
}
529528
}
530529
}

0 commit comments

Comments
 (0)