Revision: 14676
          http://sourceforge.net/p/skim-app/code/14676
Author:   hofman
Date:     2024-11-11 17:42:51 +0000 (Mon, 11 Nov 2024)
Log Message:
-----------
separate methods to get bookmarks for closed documents and current document

Modified Paths:
--------------
    trunk/SKBookmarkController.m

Modified: trunk/SKBookmarkController.m
===================================================================
--- trunk/SKBookmarkController.m        2024-11-11 17:30:04 UTC (rev 14675)
+++ trunk/SKBookmarkController.m        2024-11-11 17:42:51 UTC (rev 14676)
@@ -619,6 +619,30 @@
     return NO;
 }
 
+- (SKBookmark *)closedDocumentsBookmark {
+    NSArray *openFileURLs = [[[NSDocumentController sharedDocumentController] 
documents] valueForKey:@"fileURL"];
+    NSMutableArray *closedBms = [NSMutableArray array];
+    for (SKBookmark *aBm in recentDocuments) {
+        NSURL *fileURL = [aBm fileURL];
+        if (fileURL && ([closedBms count] > 0 || [openFileURLs 
containsObject:fileURL] == NO))
+            [closedBms addObject:aBm];
+    }
+    if ([closedBms count] > 0)
+        return [[SKBookmark alloc] initFolderWithChildren:closedBms 
label:NSLocalizedString(@"Recently Closed", @"Menu item title")];
+    return nil;
+}
+
+- (SKBookmark *)currentDocumentBookmark {
+    NSURL *fileURL = [[[[NSApp mainWindow] windowController] document] 
fileURL];
+    if (fileURL) {
+        NSArray *currentBookmarks = [[[self bookmarkRoot] entireContents] 
filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"fileURL = %@", 
fileURL]];
+        if ([currentBookmarks count] > 1) {
+            return [[SKBookmark alloc] initFolderWithChildren:[[NSArray alloc] 
initWithArray:currentBookmarks copyItems:YES] label:NSLocalizedString(@"Current 
Document", @"Menu item title")];
+        }
+    }
+    return nil;
+}
+
 - (void)menuNeedsUpdate:(NSMenu *)menu {
     if (menu == [outlineView menu]) {
         NSInteger row = [outlineView clickedRow];
@@ -655,24 +679,8 @@
             while (i-- > 0 && ([[menu itemAtIndex:i] isSeparatorItem] || 
[[menu itemAtIndex:i] representedObject]))
                 [menu removeItemAtIndex:i];
             if (supermenu == [NSApp mainMenu]) {
-                NSURL *fileURL = [[[[NSApp mainWindow] windowController] 
document] fileURL];
-                SKBookmark *currentDocument = nil;
-                if (fileURL) {
-                    NSArray *currentBookmarks = [[[self bookmarkRoot] 
entireContents] filteredArrayUsingPredicate:[NSPredicate 
predicateWithFormat:@"fileURL = %@", fileURL]];
-                    if ([currentBookmarks count] > 1) {
-                        currentDocument = [[SKBookmark alloc] 
initFolderWithChildren:[[NSArray alloc] initWithArray:currentBookmarks 
copyItems:YES] label:NSLocalizedString(@"Current Document", @"Menu item 
title")];
-                    }
-                }
-                SKBookmark *closedDocuments = nil;
-                NSArray *openFileURLs = [[[NSDocumentController 
sharedDocumentController] documents] valueForKey:@"fileURL"];
-                NSMutableArray *closedBms = [NSMutableArray array];
-                for (SKBookmark *aBm in recentDocuments) {
-                    fileURL = [aBm fileURL];
-                    if (fileURL && ([closedBms count] > 0 || [openFileURLs 
containsObject:fileURL] == NO))
-                        [closedBms addObject:aBm];
-                }
-                if ([closedBms count] > 0)
-                    closedDocuments = [[SKBookmark alloc] 
initFolderWithChildren:closedBms label:NSLocalizedString(@"Recently Closed", 
@"Menu item title")];
+                SKBookmark *closedDocuments = [self closedDocumentsBookmark];
+                SKBookmark *currentDocument = [self currentDocumentBookmark];
                 if (previousSession || closedDocuments || currentDocument)
                     [menu addItem:[NSMenuItem separatorItem]];
                 if (previousSession) {

This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.



_______________________________________________
Skim-app-commit mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/skim-app-commit

Reply via email to