diff --git a/CHANGELOG.md b/CHANGELOG.md index 560c53118de..c44c39d1dfb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -28,6 +28,7 @@ Note that this project **does not** adhere to [Semantic Versioning](http://semve - The [HtmlToLaTeXFormatter](https://docs.jabref.org/finding-sorting-and-cleaning-entries/saveactions#html-to-latex) keeps single `<` characters. - We fixed a performance regression when opening large libraries [#9041](https://github.com/JabRef/jabref/issues/9041) +- Saving after adding a subgroup and removing it do not cause a change notification anymore. [#9064](https://github.com/JabRef/jabref/issues/9064) - We fixed a bug where spaces are trimmed when highlighting differences in the Entries merge dialog. [koppor#371](https://github.com/koppor/jabref/issues/371) ### Removed diff --git a/src/main/java/org/jabref/logic/bibtex/comparator/GroupDiff.java b/src/main/java/org/jabref/logic/bibtex/comparator/GroupDiff.java index 35c2e5a1338..0877e6e37af 100644 --- a/src/main/java/org/jabref/logic/bibtex/comparator/GroupDiff.java +++ b/src/main/java/org/jabref/logic/bibtex/comparator/GroupDiff.java @@ -22,13 +22,20 @@ public static Optional compare(MetaData originalMetaData, MetaData ne final Optional originalGroups = originalMetaData.getGroups(); final Optional newGroups = newMetaData.getGroups(); - if (!originalGroups.equals(newGroups)) { + // special case: the data model may contain the single "All Entries" group without any children + boolean bothGroupsAreEmpty = groupsAreEmpty(originalGroups) && groupsAreEmpty(newGroups); + + if (!originalGroups.equals(newGroups) && !bothGroupsAreEmpty) { return Optional.of(new GroupDiff(originalGroups.orElse(null), newGroups.orElse(null))); } else { return Optional.empty(); } } + private static boolean groupsAreEmpty(Optional groups) { + return groups.map(g -> g.getChildren().isEmpty()).orElse(true); + } + public GroupTreeNode getOriginalGroupRoot() { return originalGroupRoot; }