From ce7293dc4ea0ba8cb56deff62419ac6fe0ea11fe Mon Sep 17 00:00:00 2001 From: Samiya Caur <36728314+samiyac@users.noreply.github.com> Date: Wed, 27 Mar 2019 23:40:39 +0530 Subject: [PATCH] Item Count in a group updated correctly (#4807) * Item Count in a group updated correctly * Added comments * changes --- src/main/java/org/jabref/gui/groups/GroupNodeViewModel.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/jabref/gui/groups/GroupNodeViewModel.java b/src/main/java/org/jabref/gui/groups/GroupNodeViewModel.java index c31c9ce6dd9..cb17247dd0c 100644 --- a/src/main/java/org/jabref/gui/groups/GroupNodeViewModel.java +++ b/src/main/java/org/jabref/gui/groups/GroupNodeViewModel.java @@ -55,6 +55,7 @@ public class GroupNodeViewModel { private final BooleanBinding allSelectedEntriesMatched; private final TaskExecutor taskExecutor; private final CustomLocalDragboard localDragBoard; + private final ObservableList entriesList; public GroupNodeViewModel(BibDatabaseContext databaseContext, StateManager stateManager, TaskExecutor taskExecutor, GroupTreeNode groupNode, CustomLocalDragboard localDragBoard) { this.databaseContext = Objects.requireNonNull(databaseContext); @@ -84,7 +85,9 @@ public GroupNodeViewModel(BibDatabaseContext databaseContext, StateManager state expandedProperty.addListener((observable, oldValue, newValue) -> groupNode.getGroup().setExpanded(newValue)); // Register listener - databaseContext.getDatabase().getEntries().addListener(this::onDatabaseChanged); + // The wrapper created by the FXCollections will set a weak listener on the wrapped list. This weak listener gets garbage collected. Hence, we need to maintain a reference to this list. + entriesList = databaseContext.getDatabase().getEntries(); + entriesList.addListener(this::onDatabaseChanged); ObservableList selectedEntriesMatchStatus = EasyBind.map(stateManager.getSelectedEntries(), groupNode::matches); anySelectedEntriesMatched = BindingsHelper.any(selectedEntriesMatchStatus, matched -> matched);