Revision: 29747
http://sourceforge.net/p/bibdesk/svn/29747
Author: hofman
Date: 2025-10-21 16:17:08 +0000 (Tue, 21 Oct 2025)
Log Message:
-----------
Let (search) bookmarks controller update its menu. Only update when a bookmark
has changed in the menu. Partial updating for key equivalents when there are
user defined shortcuts.
Modified Paths:
--------------
trunk/bibdesk/BDSKAppController.h
trunk/bibdesk/BDSKAppController.m
trunk/bibdesk/BDSKBookmark.h
trunk/bibdesk/BDSKBookmark.m
trunk/bibdesk/BDSKBookmarkController.h
trunk/bibdesk/BDSKBookmarkController.m
trunk/bibdesk/BDSKSearchBookmark.h
trunk/bibdesk/BDSKSearchBookmark.m
trunk/bibdesk/BDSKSearchBookmarkController.h
trunk/bibdesk/BDSKSearchBookmarkController.m
trunk/bibdesk/BDSKTextImportController.m
trunk/bibdesk/BDSKURLSheetController.m
trunk/bibdesk/Base.lproj/MainMenu.xib
trunk/bibdesk/BibDocument_Groups.m
Modified: trunk/bibdesk/BDSKAppController.h
===================================================================
--- trunk/bibdesk/BDSKAppController.h 2025-10-21 09:36:10 UTC (rev 29746)
+++ trunk/bibdesk/BDSKAppController.h 2025-10-21 16:17:08 UTC (rev 29747)
@@ -45,8 +45,6 @@
NSMenu *templatedCopyMenu;
NSMenu *previewDisplayMenu;
NSMenu *sidePreviewDisplayMenu;
- NSMenu *searchBookmarksMenu;
- NSMenu *bookmarksMenu;
NSMenu *historyMenu;
NSMenu *shareMenu;
}
@@ -57,8 +55,6 @@
@property (nonatomic, nullable, strong) IBOutlet NSMenu *templatedCopyMenu;
@property (nonatomic, nullable, strong) IBOutlet NSMenu *previewDisplayMenu;
@property (nonatomic, nullable, strong) IBOutlet NSMenu
*sidePreviewDisplayMenu;
-@property (nonatomic, nullable, strong) IBOutlet NSMenu *searchBookmarksMenu;
-@property (nonatomic, nullable, strong) IBOutlet NSMenu *bookmarksMenu;
@property (nonatomic, nullable, strong) IBOutlet NSMenu *historyMenu;
@property (nonatomic, nullable, strong) IBOutlet NSMenu *shareMenu;
@@ -73,10 +69,6 @@
- (IBAction)showReadMeFile:(nullable id)sender;
- (IBAction)showRelNotes:(nullable id)sender;
-- (IBAction)editSearchBookmarks:(nullable id)sender;
-
-- (IBAction)showBookmarks:(nullable id)sender;
-
- (IBAction)clearHistory:(nullable id)sender;
- (IBAction)toggleHistoryByDate:(nullable id)sender;
Modified: trunk/bibdesk/BDSKAppController.m
===================================================================
--- trunk/bibdesk/BDSKAppController.m 2025-10-21 09:36:10 UTC (rev 29746)
+++ trunk/bibdesk/BDSKAppController.m 2025-10-21 16:17:08 UTC (rev 29747)
@@ -65,10 +65,6 @@
#import "NSError_BDSKExtensions.h"
#import "NSImage_BDSKExtensions.h"
#import "BDSKFileMatcher.h"
-#import "BDSKSearchBookmarkController.h"
-#import "BDSKSearchBookmark.h"
-#import "BDSKBookmarkController.h"
-#import "BDSKBookmark.h"
#import "BDSKVersionNumber.h"
#import "BDSKURLGroup.h"
#import "BDSKSearchGroup.h"
@@ -111,7 +107,7 @@
@implementation BDSKAppController
-@synthesize columnsMenu, groupSortMenu, groupFieldMenu, templatedCopyMenu,
previewDisplayMenu, sidePreviewDisplayMenu, searchBookmarksMenu, bookmarksMenu,
historyMenu, shareMenu;
+@synthesize columnsMenu, groupSortMenu, groupFieldMenu, templatedCopyMenu,
previewDisplayMenu, sidePreviewDisplayMenu, historyMenu, shareMenu;
// remove legacy comparisons of added/created/modified strings in table column
code from prefs
static void fixLegacyTableColumnIdentifiers()
@@ -579,44 +575,6 @@
// implemented in order to prevent the Copy As > Template menu from being
updated at every key event
- (BOOL)menuHasKeyEquivalent:(NSMenu *)menu forEvent:(NSEvent *)event
target:(id *)target action:(SEL *)action { return NO; }
-- (void)addMenuItemsForSearchBookmarks:(NSArray *)bookmarks toMenu:(NSMenu
*)menu {
- for (BDSKSearchBookmark *bm in bookmarks) {
- if ([bm bookmarkType] == BDSKSearchBookmarkTypeFolder) {
- NSString *label = [bm label];
- NSMenu *submenu = [[NSMenu alloc] initWithTitle:[bm label]];
- NSMenuItem *item = [menu addItemWithTitle:label ?: @""
submenu:submenu];
- [item setImageAndSize:[bm icon]];
- [self addMenuItemsForSearchBookmarks:[bm children] toMenu:submenu];
- } else if ([bm bookmarkType] == BDSKSearchBookmarkTypeSeparator) {
- [menu addItem:[NSMenuItem separatorItem]];
- } else {
- NSString *label = [bm label];
- NSMenuItem *item = [menu addItemWithTitle:label ?: @""
action:@selector(newSearchGroupFromBookmark:) keyEquivalent:@""];
- [item setRepresentedObject:[bm info]];
- [item setImageAndSize:[bm icon]];
- }
- }
-}
-
-- (void)addMenuItemsForBookmarks:(NSArray *)bookmarks toMenu:(NSMenu *)menu {
- for (BDSKBookmark *bm in bookmarks) {
- if ([bm bookmarkType] == BDSKBookmarkTypeFolder) {
- NSString *name = [bm name];
- NSMenu *submenu = [[NSMenu alloc] initWithTitle:[bm name]];
- NSMenuItem *item = [menu addItemWithTitle:name ?: @""
submenu:submenu];
- [item setImageAndSize:[bm icon]];
- [self addMenuItemsForBookmarks:[bm children] toMenu:submenu];
- } else if ([bm bookmarkType] == BDSKBookmarkTypeSeparator) {
- [menu addItem:[NSMenuItem separatorItem]];
- } else {
- NSString *name = [bm name];
- NSMenuItem *item = [menu addItemWithTitle:name ?: @""
action:@selector(openBookmark:) keyEquivalent:@""];
- [item setRepresentedObject:[bm URL]];
- [item setImageAndSize:[bm icon]];
- }
- }
-}
-
- (void)addMenuItemsForHistoryItems:(NSArray *)historyItems toMenu:(NSMenu
*)menu {
for (WebHistoryItem *historyItem in historyItems) {
NSString *title = [historyItem title];
@@ -696,26 +654,6 @@
[item setRepresentedObject:style];
}
- } else if ([menu isEqual:searchBookmarksMenu]) {
-
- NSArray *bookmarks = [[[BDSKSearchBookmarkController
sharedBookmarkController] bookmarkRoot] children];
- NSInteger i = [menu numberOfItems];
- while (--i > 2)
- [menu removeItemAtIndex:i];
- if ([bookmarks count] > 0)
- [menu addItem:[NSMenuItem separatorItem]];
- [self addMenuItemsForSearchBookmarks:bookmarks toMenu:menu];
-
- } else if ([menu isEqual:bookmarksMenu]) {
-
- NSArray *bookmarks = [[[BDSKBookmarkController
sharedBookmarkController] bookmarkRoot] children];
- NSInteger i = [menu numberOfItems];
- while (--i > 4)
- [menu removeItemAtIndex:i];
- if ([bookmarks count] > 0)
- [menu addItem:[NSMenuItem separatorItem]];
- [self addMenuItemsForBookmarks:bookmarks toMenu:menu];
-
} else if ([menu isEqual:historyMenu]) {
WebHistory *history = [WebHistory optionalSharedHistory];
@@ -814,14 +752,6 @@
[[BDSKFileMatcher sharedFileMatcher] showWindow:sender];
}
-- (IBAction)editSearchBookmarks:(id)sender {
- [[BDSKSearchBookmarkController sharedBookmarkController] showWindow:self];
-}
-
-- (IBAction)showBookmarks:(id)sender{
- [[BDSKBookmarkController sharedBookmarkController] showWindow:sender];
-}
-
- (IBAction)clearHistory:(id)sender {
[[WebHistory optionalSharedHistory] removeAllItems];
}
Modified: trunk/bibdesk/BDSKBookmark.h
===================================================================
--- trunk/bibdesk/BDSKBookmark.h 2025-10-21 09:36:10 UTC (rev 29746)
+++ trunk/bibdesk/BDSKBookmark.h 2025-10-21 16:17:08 UTC (rev 29747)
@@ -68,6 +68,8 @@
@property (nonatomic, nullable, weak) BDSKBookmark *parent;
+@property (nonatomic) BOOL menuNeedsUpdate;
+
- (nullable NSArray *)children;
- (NSUInteger)countOfChildren;
- (BDSKBookmark *)objectInChildrenAtIndex:(NSUInteger)idx;
Modified: trunk/bibdesk/BDSKBookmark.m
===================================================================
--- trunk/bibdesk/BDSKBookmark.m 2025-10-21 09:36:10 UTC (rev 29746)
+++ trunk/bibdesk/BDSKBookmark.m 2025-10-21 16:17:08 UTC (rev 29747)
@@ -64,6 +64,7 @@
@interface BDSKFolderBookmark : BDSKBookmark {
NSString *name;
NSMutableArray *children;
+ BOOL menuNeedsUpdate;
}
@end
@@ -78,7 +79,7 @@
@implementation BDSKBookmark
@synthesize parent;
-@dynamic dictionaryValue, bookmarkType, URL, name, icon, URLDescription;
+@dynamic dictionaryValue, bookmarkType, URL, name, icon, URLDescription,
menuNeedsUpdate;
static Class BDSKBookmarkClass = Nil;
@@ -156,6 +157,9 @@
- (void)removeObjectFromChildrenAtIndex:(NSUInteger)idx {}
- (void)removeChildrenAtIndexes:(NSIndexSet *)indexes {}
+- (BOOL)menuNeedsUpdate { return NO; }
+- (void)setMenuNeedsUpdate:(BOOL)flag {}
+
- (BOOL)isDescendantOf:(BDSKBookmark *)bookmark {
if (self == bookmark)
return YES;
@@ -338,6 +342,7 @@
name = [aName copy];
children = [aChildren mutableCopy];
[children setValue:self forKey:@"parent"];
+ menuNeedsUpdate = YES;
}
return self;
}
@@ -405,6 +410,14 @@
[children removeObjectsAtIndexes:indexes];
}
+- (BOOL)menuNeedsUpdate {
+ return menuNeedsUpdate;
+}
+
+- (void)setMenuNeedsUpdate:(BOOL)flag {
+ menuNeedsUpdate = flag;
+}
+
@end
#pragma mark -
Modified: trunk/bibdesk/BDSKBookmarkController.h
===================================================================
--- trunk/bibdesk/BDSKBookmarkController.h 2025-10-21 09:36:10 UTC (rev
29746)
+++ trunk/bibdesk/BDSKBookmarkController.h 2025-10-21 16:17:08 UTC (rev
29747)
@@ -43,7 +43,7 @@
@class BDSKBookmark, BDSKOutlineView;
-@interface BDSKBookmarkController : NSWindowController <NSOutlineViewDelegate,
NSOutlineViewDataSource, NSToolbarDelegate, NSTouchBarDelegate> {
+@interface BDSKBookmarkController : NSWindowController <NSOutlineViewDelegate,
NSOutlineViewDataSource, NSToolbarDelegate, NSTouchBarDelegate, NSMenuDelegate>
{
BDSKOutlineView *outlineView;
NSSegmentedControl *addBookmarkButton;
NSSegmentedControl *addFolderButton;
Modified: trunk/bibdesk/BDSKBookmarkController.m
===================================================================
--- trunk/bibdesk/BDSKBookmarkController.m 2025-10-21 09:36:10 UTC (rev
29746)
+++ trunk/bibdesk/BDSKBookmarkController.m 2025-10-21 16:17:08 UTC (rev
29747)
@@ -298,6 +298,73 @@
[outlineView delete:sender];
}
+#pragma mark Menu delegate
+
+- (void)addItemForBookmark:(BDSKBookmark *)bookmark toMenu:(NSMenu *)menu
forDisplay:(BOOL)display {
+ if ([bookmark bookmarkType] == BDSKBookmarkTypeFolder) {
+ NSString *name = [bookmark name] ?: @"";
+ NSMenu *submenu = [[NSMenu alloc] initWithTitle:name];
+ [submenu setDelegate:self];
+ NSMenuItem *item = [menu addItemWithTitle:name submenu:submenu];
+ [item setRepresentedObject:bookmark];
+ if (display)
+ [item setImageAndSize:[bookmark icon]];
+ [bookmark setMenuNeedsUpdate:YES];
+ } else if ([bookmark bookmarkType] == BDSKBookmarkTypeSeparator) {
+ [menu addItem:[NSMenuItem separatorItem]];
+ } else {
+ NSString *name = [bookmark name] ?: @"";
+ NSMenuItem *item = [menu addItemWithTitle:name
action:@selector(openBookmark:) keyEquivalent:@""];
+ [item setRepresentedObject:bookmark];
+ if (display)
+ [item setImageAndSize:[bookmark icon]];
+ }
+}
+
+- (void)updateMenu:(NSMenu *)menu forDisplay:(BOOL)display {
+ NSMenu *supermenu = [menu supermenu];
+ NSInteger idx = [supermenu indexOfItemWithSubmenu:menu];
+ BDSKBookmark *bookmark = nil;
+
+ if (supermenu == [NSApp mainMenu])
+ bookmark = [self bookmarkRoot];
+ else if (idx >= 0)
+ bookmark = [[supermenu itemAtIndex:idx] representedObject];
+
+ if ([bookmark isKindOfClass:[BDSKBookmark class]]) {
+ if ([bookmark menuNeedsUpdate]) {
+ NSArray *bookmarks = [bookmark children];
+ if (supermenu == [NSApp mainMenu]) {
+ NSInteger i = [menu numberOfItems];
+ while (i-- > 0 && ([[menu itemAtIndex:i] isSeparatorItem] ||
[[menu itemAtIndex:i] representedObject]))
+ [menu removeItemAtIndex:i];
+ if ([bookmarks count] > 0)
+ [menu addItem:[NSMenuItem separatorItem]];
+ } else {
+ [menu removeAllItems];
+ }
+ for (BDSKBookmark *bm in bookmarks)
+ [self addItemForBookmark:bm toMenu:menu forDisplay:display];
+ } else if (display) {
+ for (NSMenuItem *item in [menu itemArray]) {
+ BDSKBookmark *bm = [item representedObject];
+ if ([bm isKindOfClass:[BDSKBookmark class]])
+ [item setImageAndSize:[bm icon]];
+ }
+ }
+ }
+}
+
+- (void)menuNeedsUpdate:(NSMenu *)menu {
+ [self updateMenu:menu forDisplay:YES];
+}
+
+- (BOOL)menuHasKeyEquivalent:(NSMenu *)menu forEvent:(NSEvent *)event
target:(id *)target action:(SEL *)action {
+ if ([[NSUserDefaults standardUserDefaults]
dictionaryForKey:@"NSUserKeyEquivalents"])
+ [self updateMenu:menu forDisplay:NO];
+ return NO;
+}
+
#pragma mark Notification handlers
- (void)handleApplicationWillTerminateNotification:(NSNotification
*)notification {
@@ -429,6 +496,11 @@
break;
}
+ if ([keyPath isEqualToString:CHILDREN_KEY])
+ [bookmark setMenuNeedsUpdate:YES];
+ else if ([keyPath isEqualToString:NAME_KEY])
+ [[bookmark parent] setMenuNeedsUpdate:YES];
+
} else {
[super observeValueForKeyPath:keyPath ofObject:object change:change
context:context];
}
Modified: trunk/bibdesk/BDSKSearchBookmark.h
===================================================================
--- trunk/bibdesk/BDSKSearchBookmark.h 2025-10-21 09:36:10 UTC (rev 29746)
+++ trunk/bibdesk/BDSKSearchBookmark.h 2025-10-21 16:17:08 UTC (rev 29747)
@@ -73,6 +73,8 @@
@property (nonatomic, nullable, weak) BDSKSearchBookmark *parent;
+@property (nonatomic) BOOL menuNeedsUpdate;
+
- (nullable NSArray *)children;
- (NSUInteger)countOfChildren;
- (BDSKSearchBookmark *)objectInChildrenAtIndex:(NSUInteger)idx;
Modified: trunk/bibdesk/BDSKSearchBookmark.m
===================================================================
--- trunk/bibdesk/BDSKSearchBookmark.m 2025-10-21 09:36:10 UTC (rev 29746)
+++ trunk/bibdesk/BDSKSearchBookmark.m 2025-10-21 16:17:08 UTC (rev 29747)
@@ -61,6 +61,7 @@
@interface BDSKFolderSearchBookmark : BDSKSearchBookmark {
NSString *label;
NSMutableArray *children;
+ BOOL menuNeedsUpdate;
}
@end
@@ -75,7 +76,7 @@
@implementation BDSKSearchBookmark
@synthesize parent;
-@dynamic dictionaryValue, bookmarkType, info, label, icon, name, searchTerm;
+@dynamic dictionaryValue, bookmarkType, info, label, icon, name, searchTerm,
menuNeedsUpdate;
static Class BDSKSearchBookmarkClass = Nil;
@@ -156,6 +157,9 @@
- (void)removeObjectFromChildrenAtIndex:(NSUInteger)idx {}
- (void)removeChildrenAtIndexes:(NSIndexSet *)indexes {}
+- (BOOL)menuNeedsUpdate { return NO; }
+- (void)setMenuNeedsUpdate:(BOOL)flag {}
+
- (BOOL)isDescendantOf:(BDSKSearchBookmark *)bookmark {
if (self == bookmark)
return YES;
@@ -333,6 +337,7 @@
label = [aLabel copy];
children = [aChildren mutableCopy];
[children setValue:self forKey:@"parent"];
+ menuNeedsUpdate = YES;
}
return self;
}
@@ -400,6 +405,14 @@
[children removeObjectsAtIndexes:indexes];
}
+- (BOOL)menuNeedsUpdate {
+ return menuNeedsUpdate;
+}
+
+- (void)setMenuNeedsUpdate:(BOOL)flag {
+ menuNeedsUpdate = flag;
+}
+
@end
#pragma mark -
Modified: trunk/bibdesk/BDSKSearchBookmarkController.h
===================================================================
--- trunk/bibdesk/BDSKSearchBookmarkController.h 2025-10-21 09:36:10 UTC
(rev 29746)
+++ trunk/bibdesk/BDSKSearchBookmarkController.h 2025-10-21 16:17:08 UTC
(rev 29747)
@@ -42,7 +42,7 @@
@class BDSKSearchBookmark, BDSKOutlineView;
-@interface BDSKSearchBookmarkController : NSWindowController
<NSOutlineViewDelegate, NSOutlineViewDataSource, NSToolbarDelegate,
NSTouchBarDelegate> {
+@interface BDSKSearchBookmarkController : NSWindowController
<NSOutlineViewDelegate, NSOutlineViewDataSource, NSToolbarDelegate,
NSTouchBarDelegate, NSMenuDelegate> {
BDSKOutlineView *outlineView;
NSSegmentedControl *addFolderButton;
NSSegmentedControl *addSeparatorButton;
Modified: trunk/bibdesk/BDSKSearchBookmarkController.m
===================================================================
--- trunk/bibdesk/BDSKSearchBookmarkController.m 2025-10-21 09:36:10 UTC
(rev 29746)
+++ trunk/bibdesk/BDSKSearchBookmarkController.m 2025-10-21 16:17:08 UTC
(rev 29747)
@@ -42,6 +42,7 @@
#import "BDSKSearchGroupSheetController.h"
#import "BDSKStringConstants.h"
#import "NSImage_BDSKExtensions.h"
+#import "NSMenu_BDSKExtensions.h"
#import "BDSKOutlineView.h"
#import "NSWindowController_BDSKExtensions.h"
#import "NSAnimationContext_BDSKExtensions.h"
@@ -288,6 +289,61 @@
return YES;
}
+#pragma mark NSMenu delegate
+
+- (void)addItemForBookmark:(BDSKSearchBookmark *)bookmark toMenu:(NSMenu
*)menu {
+ if ([bookmark bookmarkType] == BDSKSearchBookmarkTypeFolder) {
+ NSString *label = [bookmark label] ?: @"";
+ NSMenu *submenu = [[NSMenu alloc] initWithTitle:label];
+ [submenu setDelegate:self];
+ NSMenuItem *item = [menu addItemWithTitle:label submenu:submenu];
+ [item setRepresentedObject:bookmark];
+ [item setImageAndSize:[bookmark icon]];
+ [bookmark setMenuNeedsUpdate:YES];
+ } else if ([bookmark bookmarkType] == BDSKSearchBookmarkTypeSeparator) {
+ [menu addItem:[NSMenuItem separatorItem]];
+ } else {
+ NSString *label = [bookmark label] ?: @"";
+ NSMenuItem *item = [menu addItemWithTitle:label
action:@selector(newSearchGroupFromBookmark:) keyEquivalent:@""];
+ [item setRepresentedObject:bookmark];
+ [item setImageAndSize:[bookmark icon]];
+ }
+}
+
+- (void)menuNeedsUpdate:(NSMenu *)menu {
+ NSMenu *supermenu = [menu supermenu];
+ NSInteger idx = [supermenu indexOfItemWithSubmenu:menu];
+ BDSKSearchBookmark *bookmark = nil;
+
+ if (supermenu == [NSApp mainMenu])
+ bookmark = [self bookmarkRoot];
+ else if (idx >= 0)
+ bookmark = [[supermenu itemAtIndex:idx] representedObject];
+
+ if ([bookmark isKindOfClass:[BDSKSearchBookmark class]]) {
+ if ([bookmark menuNeedsUpdate]) {
+ NSArray *bookmarks = [bookmark children];
+ if (supermenu == [NSApp mainMenu]) {
+ NSInteger i = [menu numberOfItems];
+ while (i-- > 0 && ([[menu itemAtIndex:i] isSeparatorItem] ||
[[menu itemAtIndex:i] representedObject]))
+ [menu removeItemAtIndex:i];
+ if ([bookmarks count] > 0)
+ [menu addItem:[NSMenuItem separatorItem]];
+ } else {
+ [menu removeAllItems];
+ }
+ for (BDSKSearchBookmark *bm in bookmarks)
+ [self addItemForBookmark:bm toMenu:menu];
+ }
+ }
+}
+
+- (BOOL)menuHasKeyEquivalent:(NSMenu *)menu forEvent:(NSEvent *)event
target:(id *)target action:(SEL *)action {
+ if ([[NSUserDefaults standardUserDefaults]
dictionaryForKey:@"NSUserKeyEquivalents"])
+ [self menuNeedsUpdate:menu];
+ return NO;
+}
+
#pragma mark Undo support
- (void)handleWillUndoChange:(NSNotification *)notification {
@@ -400,6 +456,11 @@
break;
}
+ if ([keyPath isEqualToString:CHILDREN_KEY])
+ [bookmark setMenuNeedsUpdate:YES];
+ else if ([keyPath isEqualToString:LABEL_KEY])
+ [[bookmark parent] setMenuNeedsUpdate:YES];
+
[self saveBookmarks];
} else {
[super observeValueForKeyPath:keyPath ofObject:object change:change
context:context];
Modified: trunk/bibdesk/BDSKTextImportController.m
===================================================================
--- trunk/bibdesk/BDSKTextImportController.m 2025-10-21 09:36:10 UTC (rev
29746)
+++ trunk/bibdesk/BDSKTextImportController.m 2025-10-21 16:17:08 UTC (rev
29747)
@@ -75,6 +75,7 @@
#import "BDSKComplexString.h"
#import "NSWorkspace_BDSKExtensions.h"
#import "BDSKDownloadManager.h"
+#import "BDSKBookmark.h"
#define BDSKTextImportControllerFrameAutosaveName @"BDSKTextImportController
Frame Autosave Name"
@@ -380,6 +381,8 @@
- (IBAction)openBookmark:(id)sender{
NSURL *url = [sender representedObject];
+ if ([url isKindOfClass:[BDSKBookmark class]])
+ url = [(BDSKBookmark *)url URL];
if (url)
[self showWebViewWithURL:url];
}
Modified: trunk/bibdesk/BDSKURLSheetController.m
===================================================================
--- trunk/bibdesk/BDSKURLSheetController.m 2025-10-21 09:36:10 UTC (rev
29746)
+++ trunk/bibdesk/BDSKURLSheetController.m 2025-10-21 16:17:08 UTC (rev
29747)
@@ -41,6 +41,7 @@
#import "NSURL_BDSKExtensions.h"
#import "NSString_BDSKExtensions.h"
#import "BDSKTouchBarButtonGroup.h"
+#import "BDSKBookmark.h"
#define BDSKTouchBarItemIdentifierButtons
@"edu.ucsd.mmccrack.bibdesk.touchbar-item.buttons"
@@ -80,7 +81,10 @@
}
- (void)openBookmark:(id)sender {
- [self setUrlString:[sender representedObject]];
+ NSURL *url = [sender representedObject];
+ if ([url isKindOfClass:[BDSKBookmark class]])
+ url = [(BDSKBookmark *)url URL];
+ [self setUrlString:[url absoluteString]];
}
#pragma mark Touch Bar
Modified: trunk/bibdesk/Base.lproj/MainMenu.xib
===================================================================
--- trunk/bibdesk/Base.lproj/MainMenu.xib 2025-10-21 09:36:10 UTC (rev
29746)
+++ trunk/bibdesk/Base.lproj/MainMenu.xib 2025-10-21 16:17:08 UTC (rev
29747)
@@ -912,12 +912,12 @@
<menuItem title="Edit Search Bookmarks…"
keyEquivalent="b" id="1141">
<modifierMask key="keyEquivalentModifierMask"
option="YES" command="YES"/>
<connections>
- <action selector="editSearchBookmarks:"
target="214" id="1143"/>
+ <action selector="showWindow:"
target="YuN-Uf-dgv" id="N5I-Z2-Fia"/>
</connections>
</menuItem>
</items>
<connections>
- <outlet property="delegate" destination="214"
id="1146"/>
+ <outlet property="delegate"
destination="YuN-Uf-dgv" id="uxY-BT-K0L"/>
</connections>
</menu>
</menuItem>
@@ -936,7 +936,7 @@
</menuItem>
<menuItem title="Edit Bookmarks…" id="1173">
<connections>
- <action selector="showBookmarks:"
target="214" id="1174"/>
+ <action selector="showWindow:"
target="I9c-Q4-e2D" id="DGN-h1-RJB"/>
</connections>
</menuItem>
<menuItem isSeparatorItem="YES" id="1319"/>
@@ -950,7 +950,7 @@
</menuItem>
</items>
<connections>
- <outlet property="delegate" destination="214"
id="1177"/>
+ <outlet property="delegate"
destination="I9c-Q4-e2D" id="5FM-54-OwP"/>
</connections>
</menu>
</menuItem>
@@ -1056,13 +1056,11 @@
</menu>
<customObject id="214" userLabel="AppController"
customClass="BDSKAppController">
<connections>
- <outlet property="bookmarksMenu" destination="1171" id="1176"/>
<outlet property="columnsMenu" destination="611" id="1023"/>
<outlet property="groupFieldMenu" destination="1256"
id="1261"/>
<outlet property="groupSortMenu" destination="742" id="1024"/>
<outlet property="historyMenu" destination="1321" id="1323"/>
<outlet property="previewDisplayMenu" destination="893"
id="1198"/>
- <outlet property="searchBookmarksMenu" destination="1137"
id="1145"/>
<outlet property="shareMenu" destination="9js-A4-ZBi"
id="i5L-px-YWA"/>
<outlet property="sidePreviewDisplayMenu" destination="1203"
id="1212"/>
<outlet property="templatedCopyMenu" destination="533"
id="ycb-kU-uDO"/>
@@ -1080,5 +1078,7 @@
<outlet property="updaterController" destination="1235"
id="Byj-Ml-W89"/>
</connections>
</customObject>
+ <customObject id="YuN-Uf-dgv"
customClass="BDSKSearchBookmarkController"/>
+ <customObject id="I9c-Q4-e2D" customClass="BDSKBookmarkController"/>
</objects>
</document>
Modified: trunk/bibdesk/BibDocument_Groups.m
===================================================================
--- trunk/bibdesk/BibDocument_Groups.m 2025-10-21 09:36:10 UTC (rev 29746)
+++ trunk/bibdesk/BibDocument_Groups.m 2025-10-21 16:17:08 UTC (rev 29747)
@@ -97,6 +97,8 @@
#import "BDSKControlTableCellView.h"
#import "NSPointerFunctions_BDSKExtensions.h"
#import "CFString_BDSKExtensions.h"
+#import "BDSKBookmark.h"
+#import "BDSKSearchBookmark.h"
static Boolean BDSKCaseInsensitiveStringEqual(const void *value1, const void
*value2);
static CFHashCode BDSKCaseInsensitiveStringHash(const void *value);
@@ -921,7 +923,7 @@
}
- (IBAction)newSearchGroupFromBookmark:(id)sender {
- NSDictionary *dict = [sender representedObject];
+ NSDictionary *dict = [[sender representedObject] info];
BDSKSearchGroup *group = [[BDSKSearchGroup alloc] initWithDictionary:dict];
if (group) {
[groups addChildGroup:(id)group];
@@ -1285,7 +1287,10 @@
}
- (IBAction)openBookmark:(id)sender{
- if ([self openURL:[sender representedObject]] == NO)
+ NSURL *url = [sender representedObject];
+ if ([url isKindOfClass:[BDSKBookmark class]])
+ url = [(BDSKBookmark *)url URL];
+ if ([self openURL:url] == NO)
NSBeep();
}
This was sent by the SourceForge.net collaborative development platform, the
world's largest Open Source development site.
_______________________________________________
Bibdesk-commit mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/bibdesk-commit