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