From ab71c51380ceb44c6183fefc8ea7624c56d06e99 Mon Sep 17 00:00:00 2001 From: relikd Date: Tue, 2 Dec 2025 18:48:46 +0100 Subject: [PATCH] feat: show hidden articles by holding down option key --- baRSS/Status Bar Menu/BarMenu.h | 1 + baRSS/Status Bar Menu/BarMenu.m | 4 ++-- baRSS/Status Bar Menu/BarStatusItem.m | 1 + baRSS/Status Bar Menu/NSMenu+Ext.h | 2 +- baRSS/Status Bar Menu/NSMenu+Ext.m | 4 ++-- 5 files changed, 7 insertions(+), 5 deletions(-) diff --git a/baRSS/Status Bar Menu/BarMenu.h b/baRSS/Status Bar Menu/BarMenu.h index 5c58412..1bd6c04 100644 --- a/baRSS/Status Bar Menu/BarMenu.h +++ b/baRSS/Status Bar Menu/BarMenu.h @@ -4,6 +4,7 @@ NS_ASSUME_NONNULL_BEGIN @interface BarMenu : NSObject +@property (assign) BOOL showHidden; - (instancetype)init NS_UNAVAILABLE; - (instancetype)initWithStatusItem:(BarStatusItem*)statusItem NS_DESIGNATED_INITIALIZER; @end diff --git a/baRSS/Status Bar Menu/BarMenu.m b/baRSS/Status Bar Menu/BarMenu.m index f756bb1..24de513 100644 --- a/baRSS/Status Bar Menu/BarMenu.m +++ b/baRSS/Status Bar Menu/BarMenu.m @@ -64,7 +64,7 @@ - (void)setFeedGroups:(NSArray*)sortedList forMenu:(NSMenu*)menu { [menu insertDefaultHeader]; for (FeedGroup *fg in sortedList) { - [menu insertFeedGroupItem:fg withUnread:self.unreadMap].submenu.delegate = self; + [menu insertFeedGroupItem:fg withUnread:self.unreadMap showHidden:_showHidden].submenu.delegate = self; } [menu setHeaderHasUnread:self.unreadMap[menu.titleIndexPath]]; } @@ -78,7 +78,7 @@ BOOL onlyUnread = UserPrefsBool(Pref_feedUnreadOnly); for (FeedArticle *fa in sortedList) { - if (onlyUnread && !fa.unread) + if (onlyUnread && !fa.unread && !_showHidden) continue; if (--mc < 0) // mc == 0 will first decrement to -1, then evaluate break; diff --git a/baRSS/Status Bar Menu/BarStatusItem.m b/baRSS/Status Bar Menu/BarStatusItem.m index 8f6f488..705085a 100644 --- a/baRSS/Status Bar Menu/BarStatusItem.m +++ b/baRSS/Status Bar Menu/BarStatusItem.m @@ -152,6 +152,7 @@ -(void)menuWillOpen:(NSMenu *)menu { _mainMenu = menu; // autoreleased once closed self.barMenu = [[BarMenu alloc] initWithStatusItem:self]; + self.barMenu.showHidden = NSEvent.modifierFlags & NSEventModifierFlagOption; [self insertMainMenuHeader:menu]; [self.barMenu menuNeedsUpdate:menu]; diff --git a/baRSS/Status Bar Menu/NSMenu+Ext.h b/baRSS/Status Bar Menu/NSMenu+Ext.h index 6ef3e56..d5778f8 100644 --- a/baRSS/Status Bar Menu/NSMenu+Ext.h +++ b/baRSS/Status Bar Menu/NSMenu+Ext.h @@ -9,7 +9,7 @@ NS_ASSUME_NONNULL_BEGIN @property (readonly) BOOL isFeedMenu; // Generator -- (nullable NSMenuItem*)insertFeedGroupItem:(FeedGroup*)fg withUnread:(MapUnreadTotal*)unreadMap; +- (nullable NSMenuItem*)insertFeedGroupItem:(FeedGroup*)fg withUnread:(MapUnreadTotal*)unreadMap showHidden:(BOOL)showHidden; - (void)insertDefaultHeader; // Update menu - (void)setHeaderHasUnread:(UnreadTotal*)count; diff --git a/baRSS/Status Bar Menu/NSMenu+Ext.m b/baRSS/Status Bar Menu/NSMenu+Ext.m index b006cb1..06c3e3b 100644 --- a/baRSS/Status Bar Menu/NSMenu+Ext.m +++ b/baRSS/Status Bar Menu/NSMenu+Ext.m @@ -44,7 +44,7 @@ typedef NS_ENUM(NSInteger, MenuItemTag) { #pragma mark - Generator - /// Create new @c NSMenuItem with empty submenu and append it to the menu. @return Inserted item. -- (nullable NSMenuItem*)insertFeedGroupItem:(FeedGroup*)fg withUnread:(MapUnreadTotal*)unreadMap { +- (nullable NSMenuItem*)insertFeedGroupItem:(FeedGroup*)fg withUnread:(MapUnreadTotal*)unreadMap showHidden:(BOOL)showHidden { unichar chr = '-'; NSMenuItem *item = nil; switch (fg.type) { @@ -57,7 +57,7 @@ typedef NS_ENUM(NSInteger, MenuItemTag) { NSUInteger unread = unreadMap[[t substringFromIndex:2]].unread; // Check user preferences to show only unread entries - if (unread == 0 + if (unread == 0 && !showHidden && (fg.type == FEED || fg.type == GROUP) && UserPrefsBool(Pref_groupUnreadOnly)) { item.hidden = YES;