diff --git a/CHANGELOG.md b/CHANGELOG.md index 861471f2d69..df600969dad 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,6 +15,8 @@ Note that this project **does not** adhere to [Semantic Versioning](https://semv ### Fixed +- We fixed the checkbox in merge dialog "Treat duplicates the same way". Now it works + ### Removed ## [6.0-alpha.3] – 2025-10-30 diff --git a/jabgui/src/main/java/org/jabref/gui/duplicationFinder/DuplicateSearch.java b/jabgui/src/main/java/org/jabref/gui/duplicationFinder/DuplicateSearch.java index 73ea29d6f7e..cc0ad45bef1 100644 --- a/jabgui/src/main/java/org/jabref/gui/duplicationFinder/DuplicateSearch.java +++ b/jabgui/src/main/java/org/jabref/gui/duplicationFinder/DuplicateSearch.java @@ -57,6 +57,9 @@ public class DuplicateSearch extends SimpleCommand { private final BibEntryTypesManager entryTypesManager; private final TaskExecutor taskExecutor; + // For "apply to all entries" functionality. + private DuplicateResolverResult rememberedDecision = null; + public DuplicateSearch(Supplier tabSupplier, DialogService dialogService, StateManager stateManager, @@ -83,6 +86,7 @@ public void execute() { libraryAnalyzed.set(false); autoRemoveExactDuplicates.set(false); duplicateCount.set(0); + rememberedDecision = null; if (entries.size() < 2) { return; @@ -160,9 +164,23 @@ private void askResolveStrategy(DuplicateSearchResult result, BibEntry first, Bi dialog.titleProperty().bind(Bindings.concat(dialog.getTitle()).concat(" (").concat(duplicateProgress.getValue()).concat("/").concat(duplicateTotal).concat(")")); - DuplicateResolverResult resolverResult = dialogService.showCustomDialogAndWait(dialog) - .orElse(DuplicateResolverResult.BREAK); + DuplicateResolverResult resolverResult; + + if (preferences.getMergeDialogPreferences().shouldMergeApplyToAllEntries() && rememberedDecision != null) { + resolverResult = rememberedDecision; + } else { + resolverResult = dialogService.showCustomDialogAndWait(dialog) + .orElse(DuplicateResolverResult.BREAK); + + if (preferences.getMergeDialogPreferences().shouldMergeApplyToAllEntries()) { + rememberedDecision = resolverResult; + } + } + + applyDecisionToResult(result, first, second, resolverResult, dialog); + } + private void applyDecisionToResult(DuplicateSearchResult result, BibEntry first, BibEntry second, DuplicateResolverResult resolverResult, DuplicateResolverDialog dialog) { if ((resolverResult == DuplicateResolverResult.KEEP_LEFT) || (resolverResult == DuplicateResolverResult.AUTOREMOVE_EXACT)) { result.remove(second);