Sebastian Stenzel 6 роки тому
батько
коміт
9e14b5e70f

+ 7 - 7
main/commons/src/main/java/org/cryptomator/common/vaults/VaultListChangeListener.java

@@ -4,6 +4,9 @@ import javafx.collections.ListChangeListener;
 import javafx.collections.ObservableList;
 import org.cryptomator.common.settings.VaultSettings;
 
+import java.util.List;
+import java.util.stream.Collectors;
+
 /**
  * This listener makes sure to reflect any changes to the vault list back to the settings.
  */
@@ -19,14 +22,11 @@ public class VaultListChangeListener implements ListChangeListener<Vault> {
 	public void onChanged(Change<? extends Vault> c) {
 		while(c.next()) {
 			if (c.wasAdded()) {
-				for (int i = c.getFrom(); i < c.getTo(); i++) {
-					Vault v = c.getList().get(i);
-					vaultSettingsList.add(i, v.getVaultSettings());
-				}
+				List<VaultSettings> addedSettings = c.getAddedSubList().stream().map(Vault::getVaultSettings).collect(Collectors.toList());
+				vaultSettingsList.addAll(c.getFrom(), addedSettings);
 			} else if (c.wasRemoved()) {
-				for (Vault v : c.getRemoved()) {
-					vaultSettingsList.remove(v.getVaultSettings());
-				}
+				List<VaultSettings> removedSettings = c.getRemoved().stream().map(Vault::getVaultSettings).collect(Collectors.toList());
+				vaultSettingsList.removeAll(removedSettings);
 			}
 		}
 	}