Skip to content

Commit

Permalink
Improve handling of FoldersTree manual sort issues
Browse files Browse the repository at this point in the history
Implement a less crude way to recover when ‑loadTree:rootNode: returns NO:
reattach missing folders directly under the root folder.

Expected to improve on issue ViennaRSS#1743 : Vienna abruptly auto-sorts folders
in the alphabetical order on the left panel
  • Loading branch information
barijaona committed Jun 26, 2024
1 parent 5f576e5 commit e3751a9
Showing 1 changed file with 16 additions and 8 deletions.
24 changes: 16 additions & 8 deletions Vienna/Sources/Main window/FoldersTree.m
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down

0 comments on commit e3751a9

Please sign in to comment.