diff --git a/Vienna/Sources/Main window/FoldersTree.m b/Vienna/Sources/Main window/FoldersTree.m index d1da3e6a1a..e6dabb110a 100644 --- a/Vienna/Sources/Main window/FoldersTree.m +++ b/Vienna/Sources/Main window/FoldersTree.m @@ -154,14 +154,22 @@ -(void)handleOpenReaderFolderChange:(NSNotification *)nc */ -(void)reloadDatabase:(NSArray *)stateArray { - [self.rootNode removeChildren]; - if (![self loadTree:[[Database sharedManager] arrayOfFolders:VNAFolderTypeRoot] rootNode:self.rootNode]) { - [[Preferences standardPreferences] setFoldersTreeSortMethod:VNAFolderSortByName]; - [self.rootNode removeChildren]; - [self loadTree:[[Database sharedManager] arrayOfFolders:VNAFolderTypeRoot] rootNode:self.rootNode]; - } - [self.outlineView reloadData]; - [self unarchiveState:stateArray]; + [self.rootNode removeChildren]; + if (![self loadTree:[[Database sharedManager] arrayOfFolders:VNAFolderTypeRoot] rootNode:self.rootNode]) { + // recover from problems by putting missing folders under root node + NSArray *allFolders = [[Database sharedManager] arrayOfAllFolders]; // all RSS and group folders + NSArray *installedFolders = [self folders:0]; // RSS folders already present + for (Folder *folder in allFolders) { + if ((folder.type == VNAFolderTypeRSS || folder.type == VNAFolderTypeOpenReader) + && ![installedFolders containsObject:folder]) + { + TreeNode *subNode; + subNode = [[TreeNode alloc] init:self.rootNode atIndex:-1 folder:folder canHaveChildren:NO]; + } + } + } + [self.outlineView reloadData]; + [self unarchiveState:stateArray]; } /* saveFolderSettings