Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/arduino/Arduino.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartino Facchin <m.facchin@arduino.cc>2020-12-22 13:56:52 +0300
committerCristian Maglie <c.maglie@arduino.cc>2021-05-11 15:31:21 +0300
commitcec4f41dd7c588c5dd6279e82d58d5625a88b380 (patch)
treeda06dd2fc05f9269bdfd14cfd783d240e8aa431f
parent96bd671c6e740d38488349ed0cbb512bb50b22dd (diff)
Board Manager: searching returns also near matches
The original filter would only populate the contribution list with perfect matches. Previously, if a core was installed but didn't match the search it wouldn't appear in the results (due to a board being added or the description changed); the user could then install (not upgrade) the core, triggering a confusing situation. When moving to arduino-cli backend we should take care of this issue, at least visually (the cli logic would correctly update/downgrade the core)
-rw-r--r--app/src/cc/arduino/contributions/packages/ui/ContributedPlatformReleases.java6
-rw-r--r--app/src/cc/arduino/contributions/packages/ui/ContributionIndexTableModel.java18
2 files changed, 22 insertions, 2 deletions
diff --git a/app/src/cc/arduino/contributions/packages/ui/ContributedPlatformReleases.java b/app/src/cc/arduino/contributions/packages/ui/ContributedPlatformReleases.java
index fc516512d..2cdeb5c27 100644
--- a/app/src/cc/arduino/contributions/packages/ui/ContributedPlatformReleases.java
+++ b/app/src/cc/arduino/contributions/packages/ui/ContributedPlatformReleases.java
@@ -61,6 +61,12 @@ public class ContributedPlatformReleases {
return platform.getArchitecture().equals(arch);
}
+ public boolean contains(ContributedPlatform platform) {
+ return (platform.getParentPackage().equals(packager)
+ && platform.getArchitecture().equals(arch)
+ && versions.contains(platform.getParsedVersion()));
+ }
+
public void add(ContributedPlatform platform) {
releases.add(platform);
String version = platform.getParsedVersion();
diff --git a/app/src/cc/arduino/contributions/packages/ui/ContributionIndexTableModel.java b/app/src/cc/arduino/contributions/packages/ui/ContributionIndexTableModel.java
index f7dbd95d7..4a9b89bb3 100644
--- a/app/src/cc/arduino/contributions/packages/ui/ContributionIndexTableModel.java
+++ b/app/src/cc/arduino/contributions/packages/ui/ContributionIndexTableModel.java
@@ -66,11 +66,21 @@ public class ContributionIndexTableModel
+ platform.getBoards().stream()
.map(ContributedBoard::getName)
.collect(Collectors.joining(" "));
+
+ // Add all the versions of the same core, even if there's no match
+ for (ContributedPlatformReleases contribution : contributions) {
+ if (contribution.shouldContain(platform)) {
+ addContribution(platform);
+ continue;
+ }
+ }
+
if (!filter.test(platform)) {
continue;
}
if (!stringContainsAll(compoundTargetSearchText, filters))
continue;
+
addContribution(platform);
}
}
@@ -110,12 +120,16 @@ public class ContributionIndexTableModel
private void addContribution(ContributedPlatform platform) {
for (ContributedPlatformReleases contribution : contributions) {
- if (!contribution.shouldContain(platform))
+ if (!contribution.shouldContain(platform)) {
continue;
+ }
+ if (contribution.contains(platform)) {
+ // no duplicates
+ return;
+ }
contribution.add(platform);
return;
}
-
contributions.add(new ContributedPlatformReleases(platform));
}