Revision: 29751
http://sourceforge.net/p/bibdesk/svn/29751
Author: hofman
Date: 2025-10-22 15:03:41 +0000 (Wed, 22 Oct 2025)
Log Message:
-----------
use propertiesToUpdate to determine what to update in bookmarks menus
Modified Paths:
--------------
trunk/bibdesk/BDSKBookmarkController.m
trunk/bibdesk/BDSKSearchBookmarkController.m
Modified: trunk/bibdesk/BDSKBookmarkController.m
===================================================================
--- trunk/bibdesk/BDSKBookmarkController.m 2025-10-22 14:28:39 UTC (rev
29750)
+++ trunk/bibdesk/BDSKBookmarkController.m 2025-10-22 15:03:41 UTC (rev
29751)
@@ -357,15 +357,45 @@
}
- (void)menuNeedsUpdate:(NSMenu *)menu {
- [self updateMenu:menu forDisplay:YES];
+ BOOL updateImage = ([menu propertiesToUpdate] & NSMenuPropertyItemImage)
!= 0;
+ if (updateImage == NO && [[NSUserDefaults standardUserDefaults]
objectForKey:@"NSUserKeyEquivalents"] == nil)
+ return;
+
+ 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]] == NO)
+ return;
+
+ 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:updateImage];
+ [bookmark setMenuNeedsUpdate:NO];
+ } else if (updateImage) {
+ for (NSMenuItem *item in [menu itemArray]) {
+ BDSKBookmark *bm = [item representedObject];
+ if ([bm isKindOfClass:[BDSKBookmark class]])
+ [item setImageAndSize:[bm icon]];
+ }
+ }
}
-- (BOOL)menuHasKeyEquivalent:(NSMenu *)menu forEvent:(NSEvent *)event
target:(id *)target action:(SEL *)action {
- if ([[NSUserDefaults standardUserDefaults]
objectForKey:@"NSUserKeyEquivalents"])
- [self updateMenu:menu forDisplay:NO];
- return NO;
-}
-
#pragma mark Notification handlers
- (void)handleApplicationWillTerminateNotification:(NSNotification
*)notification {
Modified: trunk/bibdesk/BDSKSearchBookmarkController.m
===================================================================
--- trunk/bibdesk/BDSKSearchBookmarkController.m 2025-10-22 14:28:39 UTC
(rev 29750)
+++ trunk/bibdesk/BDSKSearchBookmarkController.m 2025-10-22 15:03:41 UTC
(rev 29751)
@@ -311,6 +311,9 @@
}
- (void)menuNeedsUpdate:(NSMenu *)menu {
+ if (([menu propertiesToUpdate] & NSMenuPropertyItemImage) == 0 &&
[[NSUserDefaults standardUserDefaults] objectForKey:@"NSUserKeyEquivalents"] ==
nil)
+ return;
+
NSMenu *supermenu = [menu supermenu];
NSInteger idx = [supermenu indexOfItemWithSubmenu:menu];
BDSKSearchBookmark *bookmark = nil;
@@ -320,29 +323,24 @@
else if (idx >= 0)
bookmark = [[supermenu itemAtIndex:idx] representedObject];
- if ([bookmark isKindOfClass:[BDSKSearchBookmark class]] && [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];
- [bookmark setMenuNeedsUpdate:NO];
+ if ([bookmark isKindOfClass:[BDSKSearchBookmark class]] == NO|| [bookmark
menuNeedsUpdate] == NO)
+ return;
+
+ 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];
+ [bookmark setMenuNeedsUpdate:NO];
}
-- (BOOL)menuHasKeyEquivalent:(NSMenu *)menu forEvent:(NSEvent *)event
target:(id *)target action:(SEL *)action {
- if ([[NSUserDefaults standardUserDefaults]
objectForKey:@"NSUserKeyEquivalents"])
- [self menuNeedsUpdate:menu];
- return NO;
-}
-
#pragma mark Undo support
- (void)handleWillUndoChange:(NSNotification *)notification {
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