Revision: 14655
          http://sourceforge.net/p/skim-app/code/14655
Author:   hofman
Date:     2024-11-07 17:20:48 +0000 (Thu, 07 Nov 2024)
Log Message:
-----------
Register documents when closing and ad a Recently Closed submenu to the 
Bookmarks menu. Show bookmarks for current document separately only when there 
is more than one. Don't show missing files in Previous Session and Recently 
Closed submenu.

Modified Paths:
--------------
    trunk/SKBookmarkController.h
    trunk/SKBookmarkController.m
    trunk/SKMainWindowController_UI.m
    trunk/SKNotesDocument.m
    trunk/de.lproj/Localizable.strings
    trunk/en.lproj/Localizable.strings
    trunk/es.lproj/Localizable.strings
    trunk/fr.lproj/Localizable.strings
    trunk/it.lproj/Localizable.strings
    trunk/ja.lproj/Localizable.strings
    trunk/nl.lproj/Localizable.strings
    trunk/pl.lproj/Localizable.strings
    trunk/ru.lproj/Localizable.strings
    trunk/zh_CN.lproj/Localizable.strings
    trunk/zh_TW.lproj/Localizable.strings

Modified: trunk/SKBookmarkController.h
===================================================================
--- trunk/SKBookmarkController.h        2024-11-07 15:13:54 UTC (rev 14654)
+++ trunk/SKBookmarkController.h        2024-11-07 17:20:48 UTC (rev 14655)
@@ -56,6 +56,7 @@
     NSButton *previewButton;
     SKBookmark *bookmarkRoot;
     SKBookmark *previousSession;
+    SKBookmark *closedDocuments;
     NSMutableArray<SKRecentDocumentInfo *> *recentDocuments;
     NSUndoManager *undoManager;
     NSArray<SKBookmark *> *draggedBookmarks;
@@ -91,6 +92,8 @@
 - (void)removeBookmarkAtIndex:(NSUInteger)anIndex ofBookmark:(SKBookmark 
*)parent animate:(BOOL)animate;
 - (void)replaceBookmarkAtIndex:(NSUInteger)anIndex ofBookmark:(SKBookmark 
*)parent withBookmark:(SKBookmark *)bookmark animate:(BOOL)animate;
 
+- (void)addClosedDocumentWithSetup:(NSDictionary<NSString *, id> *)setup;
+
 - (void)addRecentDocumentForURL:(NSURL *)fileURL 
pageIndex:(NSUInteger)pageIndex snapshots:(nullable 
NSArray<NSDictionary<NSString *, id> *> *)setups;
 - (NSUInteger)pageIndexForRecentDocumentAtURL:(NSURL *)fileURL;
 - (NSArray<NSDictionary<NSString *, id> *> 
*)snapshotsForRecentDocumentAtURL:(NSURL *)fileURL;

Modified: trunk/SKBookmarkController.m
===================================================================
--- trunk/SKBookmarkController.m        2024-11-07 15:13:54 UTC (rev 14654)
+++ trunk/SKBookmarkController.m        2024-11-07 17:20:48 UTC (rev 14655)
@@ -235,6 +235,14 @@
     [[NSUserDefaults standardUserDefaults] 
setPersistentDomain:bookmarksDictionary forName:SKBookmarksIdentifier];
 }
 
+#pragma mark Closed Documents
+
+- (void)addClosedDocumentWithSetup:(NSDictionary *)setup {
+    if (closedDocuments == nil)
+        closedDocuments = [[SKBookmark alloc] initFolderWithChildren:nil 
label:NSLocalizedString(@"Recently Closed", @"Menu item title")];
+    [closedDocuments insertObject:[[SKBookmark alloc] initWithSetup:setup 
label:@""] inChildrenAtIndex:0];
+}
+
 #pragma mark Recent Documents
 
 - (SKRecentDocumentInfo *)recentDocumentInfoAtURL:(NSURL *)fileURL {
@@ -654,19 +662,20 @@
                 NSArray *currentBookmarks = nil;
                 if (fileURL)
                     currentBookmarks = [[[self bookmarkRoot] entireContents] 
filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"fileURL = %@", 
fileURL]];
-                if (previousSession || [currentBookmarks count] > 0)
+                if (previousSession || closedDocuments || [currentBookmarks 
count] > 1)
                     [menu addItem:[NSMenuItem separatorItem]];
                 if (previousSession) {
                     [self addItemForBookmark:previousSession toMenu:menu 
isFolder:NO isAlternate:NO];
                     [self addItemForBookmark:previousSession toMenu:menu 
isFolder:YES isAlternate:YES];
                 }
-                if ([currentBookmarks count] > 0) {
-                    NSMenuItem *item = [menu 
addItemWithSubmenuAndTitle:NSLocalizedString(@"Current Document", @"Menu item 
title")];
-                    [item setRepresentedObject:fileURL];
-                    NSMenu *submenu = [item submenu];
-                    for (SKBookmark *aBm in currentBookmarks)
-                        [self addItemForBookmark:aBm toMenu:submenu 
isFolder:NO isAlternate:NO];
+                if (closedDocuments) {
+                    [self addItemForBookmark:closedDocuments toMenu:menu 
isFolder:YES isAlternate:NO];
+                    [self addItemForBookmark:closedDocuments toMenu:menu 
isFolder:NO isAlternate:YES];
                 }
+                if ([currentBookmarks count] > 1) {
+                    SKBookmark *folder = [[SKBookmark alloc] 
initFolderWithChildren:currentBookmarks label:NSLocalizedString(@"Current 
Document", @"Menu item title")];
+                    [self addItemForBookmark:folder toMenu:menu isFolder:YES 
isAlternate:NO];
+                }
             }
             if ([menu numberOfItems] > 0 && [bookmarks count] > 0)
                 [menu addItem:[NSMenuItem separatorItem]];
@@ -685,7 +694,8 @@
                         [menu addItem:[NSMenuItem separatorItem]];
                         break;
                     default:
-                        [self addItemForBookmark:aBm toMenu:menu isFolder:NO 
isAlternate:NO];
+                        if ((bm != closedDocuments && bm != previousSession) 
|| [aBm fileURL] != nil)
+                            [self addItemForBookmark:aBm toMenu:menu 
isFolder:NO isAlternate:NO];
                         break;
                 }
             }

Modified: trunk/SKMainWindowController_UI.m
===================================================================
--- trunk/SKMainWindowController_UI.m   2024-11-07 15:13:54 UTC (rev 14654)
+++ trunk/SKMainWindowController_UI.m   2024-11-07 17:20:48 UTC (rev 14655)
@@ -91,6 +91,7 @@
 #import "NSPasteboard_SKExtensions.h"
 #import "SKApplicationController.h"
 #import "SKPresentationView.h"
+#import "SKBookmarkController.h"
 
 #define NOTES_KEY       @"notes"
 #define SNAPSHOTS_KEY   @"snapshots"
@@ -251,6 +252,8 @@
     if ([[notification object] isEqual:[self window]]) {
         [self setRecentInfoNeedsUpdate:YES];
         [[self document] saveRecentDocumentInfo];
+        if ([[self document] fileURL])
+            [[SKBookmarkController sharedBookmarkController] 
addClosedDocumentWithSetup:[[self document] currentDocumentSetup]];
         if ([[pdfView document] isFinding])
             [[pdfView document] cancelFindString];
         if ((mwcFlags.isEditingTable || [pdfView isEditing]) && [self 
commitEditing] == NO)

Modified: trunk/SKNotesDocument.m
===================================================================
--- trunk/SKNotesDocument.m     2024-11-07 15:13:54 UTC (rev 14654)
+++ trunk/SKNotesDocument.m     2024-11-07 17:20:48 UTC (rev 14655)
@@ -73,6 +73,7 @@
 #import "PDFDocument_SKExtensions.h"
 #import "SKNoteTableRowView.h"
 #import "NSObject_SKExtensions.h"
+#import "SKBookmarkController.h"
 
 #define SKNotesDocumentWindowFrameAutosaveName @"SKNotesDocumentWindow"
 
@@ -194,6 +195,8 @@
 
 - (void)windowWillClose:(NSNotification *)notification {
     [pdfDocument setContainingDocument:nil];
+    if ([self fileURL])
+        [[SKBookmarkController sharedBookmarkController] 
addClosedDocumentWithSetup:[self currentDocumentSetup]];
 }
 
 - (void)windowDidResize:(NSNotification *)notification {

Modified: trunk/de.lproj/Localizable.strings
===================================================================
(Binary files differ)

Modified: trunk/en.lproj/Localizable.strings
===================================================================
(Binary files differ)

Modified: trunk/es.lproj/Localizable.strings
===================================================================
(Binary files differ)

Modified: trunk/fr.lproj/Localizable.strings
===================================================================
(Binary files differ)

Modified: trunk/it.lproj/Localizable.strings
===================================================================
(Binary files differ)

Modified: trunk/ja.lproj/Localizable.strings
===================================================================
(Binary files differ)

Modified: trunk/nl.lproj/Localizable.strings
===================================================================
(Binary files differ)

Modified: trunk/pl.lproj/Localizable.strings
===================================================================
(Binary files differ)

Modified: trunk/ru.lproj/Localizable.strings
===================================================================
(Binary files differ)

Modified: trunk/zh_CN.lproj/Localizable.strings
===================================================================
(Binary files differ)

Modified: trunk/zh_TW.lproj/Localizable.strings
===================================================================
(Binary files differ)

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