Compare commits
5 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
8de163859b | ||
|
|
f739b64ceb | ||
|
|
c2fda881b1 | ||
|
|
a0a5b5b82d | ||
|
|
43e32b2286 |
12
CHANGELOG.md
12
CHANGELOG.md
@@ -5,11 +5,20 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|||||||
and this project does adhere to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
and this project does adhere to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||||
|
|
||||||
|
|
||||||
|
## [1.5.5] – 2025-12-03
|
||||||
|
### Added
|
||||||
|
- *Settings, Appearance:* Improved tooltips on individual options
|
||||||
|
- *Status Bar Menu:* Toggle button to show hidden articles without holding down option-key.
|
||||||
|
|
||||||
|
|
||||||
## [1.5.4] – 2025-12-02
|
## [1.5.4] – 2025-12-02
|
||||||
### Added
|
### Added
|
||||||
- *UI:* Tooltip explanation for all appearance settings
|
- *Settings, Appearance:* Tooltip explanation for all options
|
||||||
- *Status Bar Menu:* Hold down option key before opening the menu bar icon to show hidden articles (if option "Show only unread" is active)
|
- *Status Bar Menu:* Hold down option key before opening the menu bar icon to show hidden articles (if option "Show only unread" is active)
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
- *UI:* Table cells were rendered slightly off bounds.
|
||||||
|
|
||||||
|
|
||||||
## [1.5.3] – 2025-10-29
|
## [1.5.3] – 2025-10-29
|
||||||
### Fixed
|
### Fixed
|
||||||
@@ -236,6 +245,7 @@ and this project does adhere to [Semantic Versioning](https://semver.org/spec/v2
|
|||||||
Initial release
|
Initial release
|
||||||
|
|
||||||
|
|
||||||
|
[1.5.5]: https://github.com/relikd/baRSS/compare/v1.5.4...v1.5.5
|
||||||
[1.5.4]: https://github.com/relikd/baRSS/compare/v1.5.3...v1.5.4
|
[1.5.4]: https://github.com/relikd/baRSS/compare/v1.5.3...v1.5.4
|
||||||
[1.5.3]: https://github.com/relikd/baRSS/compare/v1.5.2...v1.5.3
|
[1.5.3]: https://github.com/relikd/baRSS/compare/v1.5.2...v1.5.3
|
||||||
[1.5.2]: https://github.com/relikd/baRSS/compare/v1.5.1...v1.5.2
|
[1.5.2]: https://github.com/relikd/baRSS/compare/v1.5.1...v1.5.2
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ CODE_SIGN_IDENTITY = Apple Development
|
|||||||
ENABLE_HARDENED_RUNTIME = YES
|
ENABLE_HARDENED_RUNTIME = YES
|
||||||
|
|
||||||
MACOSX_DEPLOYMENT_TARGET = 10.14
|
MACOSX_DEPLOYMENT_TARGET = 10.14
|
||||||
MARKETING_VERSION = 1.5.4
|
MARKETING_VERSION = 1.5.5
|
||||||
PRODUCT_NAME = baRSS
|
PRODUCT_NAME = baRSS
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = de.relikd.baRSS
|
PRODUCT_BUNDLE_IDENTIFIER = de.relikd.baRSS
|
||||||
CURRENT_PROJECT_VERSION = 16928
|
CURRENT_PROJECT_VERSION = 16970
|
||||||
|
|||||||
@@ -17,6 +17,7 @@
|
|||||||
// ------ Appearance matrix ------ (Preferences > Appearance Tab) ------
|
// ------ Appearance matrix ------ (Preferences > Appearance Tab) ------
|
||||||
/** default: @c YES */ static NSString* const Pref_globalTintMenuIcon = @"globalTintMenuBarIcon";
|
/** default: @c YES */ static NSString* const Pref_globalTintMenuIcon = @"globalTintMenuBarIcon";
|
||||||
/** default: @c YES */ static NSString* const Pref_globalUpdateAll = @"globalUpdateAll";
|
/** default: @c YES */ static NSString* const Pref_globalUpdateAll = @"globalUpdateAll";
|
||||||
|
/** default: @c NO */ static NSString* const Pref_globalToggleHidden = @"globalToggleHidden";
|
||||||
/** default: @c YES */ static NSString* const Pref_globalOpenUnread = @"globalOpenUnread";
|
/** default: @c YES */ static NSString* const Pref_globalOpenUnread = @"globalOpenUnread";
|
||||||
/** default: @c YES */ static NSString* const Pref_globalMarkRead = @"globalMarkRead";
|
/** default: @c YES */ static NSString* const Pref_globalMarkRead = @"globalMarkRead";
|
||||||
/** default: @c YES */ static NSString* const Pref_globalMarkUnread = @"globalMarkUnread";
|
/** default: @c YES */ static NSString* const Pref_globalMarkUnread = @"globalMarkUnread";
|
||||||
|
|||||||
@@ -20,6 +20,7 @@ void UserPrefsInit(void) {
|
|||||||
Pref_feedUnreadIndicator
|
Pref_feedUnreadIndicator
|
||||||
]);
|
]);
|
||||||
defaultsAppend(defs, @NO, @[
|
defaultsAppend(defs, @NO, @[
|
||||||
|
Pref_globalToggleHidden,
|
||||||
Pref_groupUnreadOnly, Pref_feedUnreadOnly,
|
Pref_groupUnreadOnly, Pref_feedUnreadOnly,
|
||||||
Pref_groupUnreadIndicator,
|
Pref_groupUnreadIndicator,
|
||||||
Pref_feedTruncateTitle,
|
Pref_feedTruncateTitle,
|
||||||
|
|||||||
@@ -18,56 +18,97 @@
|
|||||||
- (instancetype)init {
|
- (instancetype)init {
|
||||||
self = [super initWithFrame:NSMakeRect(0, 0, 320, 327)];
|
self = [super initWithFrame:NSMakeRect(0, 0, 320, 327)];
|
||||||
// Insert matrix header (icons above checkbox matrix)
|
// Insert matrix header (icons above checkbox matrix)
|
||||||
ColumnIcon(self, X__, RSSImageSettingsGlobal, NSLocalizedString(@"Show in menu bar", nil));
|
ColumnIcon(self, X__, RSSImageSettingsGlobal);
|
||||||
ColumnIcon(self, _X_, RSSImageSettingsGroup, NSLocalizedString(@"Show in group menu", nil));
|
ColumnIcon(self, _X_, RSSImageSettingsGroup);
|
||||||
ColumnIcon(self, __X, RSSImageSettingsFeed, NSLocalizedString(@"Show in feed menu", nil));
|
ColumnIcon(self, __X, RSSImageSettingsFeed);
|
||||||
// Generate checkbox matrix
|
// Generate checkbox matrix
|
||||||
self.y = PAD_WIN + IconSize + PAD_S;
|
self.y = PAD_WIN + IconSize + PAD_S;
|
||||||
[[self entry:NSLocalizedString(@"Tint menu bar icon on unread", nil)
|
[self entry:NSLocalizedString(@"Tint menu bar icon on unread", nil)
|
||||||
c1:Pref_globalTintMenuIcon c2:nil c3:nil]
|
help:NSLocalizedString(@"If active, a color will indicate if there are unread articles.", nil)
|
||||||
tooltip:NSLocalizedString(@"If active, a color will indicate if there are unread articles.", nil)];
|
tip:nil
|
||||||
|
c1:Pref_globalTintMenuIcon c1tt:NSLocalizedString(@"menu bar icon", nil)
|
||||||
|
c2:nil c2tt:nil
|
||||||
|
c3:nil c3tt:nil];
|
||||||
|
|
||||||
[[self entry:NSLocalizedString(@"Update all feeds", nil)
|
[self entry:NSLocalizedString(@"Update all feeds", nil)
|
||||||
c1:Pref_globalUpdateAll c2:nil c3:nil]
|
help:NSLocalizedString(@"Show button in main menu to reload all feeds. This will force fetch new online content regardless of next-update timer.", nil)
|
||||||
tooltip:NSLocalizedString(@"Show a button in status bar menu to reload all feeds. This will force fetch new online content regardless of next-update timer.", nil)];
|
tip:nil
|
||||||
|
c1:Pref_globalUpdateAll c1tt:NSLocalizedString(@"in main menu", nil)
|
||||||
|
c2:nil c2tt:nil
|
||||||
|
c3:nil c3tt:nil];
|
||||||
|
|
||||||
[[self entry:NSLocalizedString(@"Open all unread", nil)
|
[self entry:NSLocalizedString(@"Toggle “Show Hidden Articles”", nil)
|
||||||
c1:Pref_globalOpenUnread c2:Pref_groupOpenUnread c3:Pref_feedOpenUnread]
|
help:NSLocalizedString(@"Show button in main menu to quickly toggle whether hidden articles should be shown. See option “Show only unread”.", nil)
|
||||||
tooltip:NSLocalizedString(@"Show a button to open unread articles. (globally / per group / per feed)\n\nIf you hold down option key, this will become an “open a few” unread articles button.", nil)];
|
tip:nil
|
||||||
|
c1:Pref_globalToggleHidden c1tt:NSLocalizedString(@"in main menu", nil)
|
||||||
|
c2:nil c2tt:nil
|
||||||
|
c3:nil c3tt:nil];
|
||||||
|
|
||||||
[[self entry:NSLocalizedString(@"Mark all read", nil)
|
[self entry:NSLocalizedString(@"Open all unread", nil)
|
||||||
c1:Pref_globalMarkRead c2:Pref_groupMarkRead c3:Pref_feedMarkRead]
|
help:NSLocalizedString(@"Show button to open unread articles.", nil)
|
||||||
tooltip:NSLocalizedString(@"Show a button to mark articles read. (globally / per group / per feed)", nil)];
|
tip:NSLocalizedString(@"If you hold down option-key, this will become an “open a few” unread articles button.", nil)
|
||||||
|
c1:Pref_globalOpenUnread c1tt: NSLocalizedString(@"in main menu", nil)
|
||||||
|
c2:Pref_groupOpenUnread c2tt: NSLocalizedString(@"in group menu", nil)
|
||||||
|
c3:Pref_feedOpenUnread c3tt: NSLocalizedString(@"in feed menu", nil)];
|
||||||
|
|
||||||
[[self entry:NSLocalizedString(@"Mark all unread", nil)
|
[self entry:NSLocalizedString(@"Mark all read", nil)
|
||||||
c1:Pref_globalMarkUnread c2:Pref_groupMarkUnread c3:Pref_feedMarkUnread]
|
help:NSLocalizedString(@"Show button to mark articles read.", nil)
|
||||||
tooltip:NSLocalizedString(@"Show a button to mark articles unread. (globally / per group / per feed)\n\nYou can hold down option key and click on an article to toggle that item (un-)read.", nil)];
|
tip:nil
|
||||||
|
c1:Pref_globalMarkRead c1tt: NSLocalizedString(@"in main menu", nil)
|
||||||
|
c2:Pref_groupMarkRead c2tt: NSLocalizedString(@"in group menu", nil)
|
||||||
|
c3:Pref_feedMarkRead c3tt: NSLocalizedString(@"in feed menu", nil)];
|
||||||
|
|
||||||
[[self entry:NSLocalizedString(@"Number of unread articles", nil)
|
[self entry:NSLocalizedString(@"Mark all unread", nil)
|
||||||
c1:Pref_globalUnreadCount c2:Pref_groupUnreadCount c3:Pref_feedUnreadCount]
|
help:NSLocalizedString(@"Show button to mark articles unread.", nil)
|
||||||
tooltip:NSLocalizedString(@"Show count of unread articles in parenthesis. (on menu bar icon / on group folder / on feed folder)", nil)];
|
tip:NSLocalizedString(@"You can hold down option-key and click on an article to toggle that item (un-)read.", nil)
|
||||||
|
c1:Pref_globalMarkUnread c1tt: NSLocalizedString(@"in main menu", nil)
|
||||||
|
c2:Pref_groupMarkUnread c2tt: NSLocalizedString(@"in group menu", nil)
|
||||||
|
c3:Pref_feedMarkUnread c3tt: NSLocalizedString(@"in feed menu", nil)];
|
||||||
|
|
||||||
[[self entry:NSLocalizedString(@"Indicator for unread articles", nil)
|
[self entry:NSLocalizedString(@"Number of unread articles", nil)
|
||||||
c1:nil c2:Pref_groupUnreadIndicator c3:Pref_feedUnreadIndicator]
|
help:NSLocalizedString(@"Show count of unread articles in parenthesis.", nil)
|
||||||
tooltip:NSLocalizedString(@"Show blue dot on menu items with unread articles. (on group & feed folder / on article entry)", nil)];
|
tip:nil
|
||||||
|
c1:Pref_globalUnreadCount c1tt:NSLocalizedString(@"on menu bar icon", nil)
|
||||||
|
c2:Pref_groupUnreadCount c2tt:NSLocalizedString(@"on group folder", nil)
|
||||||
|
c3:Pref_feedUnreadCount c3tt:NSLocalizedString(@"on feed folder", nil)];
|
||||||
|
|
||||||
[[self entry:NSLocalizedString(@"Show only unread", nil)
|
[self entry:NSLocalizedString(@"Indicator for unread articles", nil)
|
||||||
c1:nil c2:Pref_groupUnreadOnly c3:Pref_feedUnreadOnly]
|
help:NSLocalizedString(@"Show blue dot on menu items with unread articles.", nil)
|
||||||
tooltip:NSLocalizedString(@"Hide articles which have been read. (hide group & feed folders / hide articles inside of feed folder)", nil)];
|
tip:nil
|
||||||
|
c1:nil c1tt:nil
|
||||||
|
c2:Pref_groupUnreadIndicator c2tt:NSLocalizedString(@"on group & feed folder", nil)
|
||||||
|
c3:Pref_feedUnreadIndicator c3tt:NSLocalizedString(@"on article entry", nil)];
|
||||||
|
|
||||||
[[self entry:NSLocalizedString(@"Truncate article title", nil)
|
[self entry:NSLocalizedString(@"Show only unread", nil)
|
||||||
c1:nil c2:nil c3:Pref_feedTruncateTitle]
|
help:NSLocalizedString(@"Hide articles which have been read.", nil)
|
||||||
tooltip:NSLocalizedString(@"Truncate article title after 60 characters. If a title is longer than that, show an ellipsis character “…” instead.", nil)];
|
tip:NSLocalizedString(@"You can hold down option-key before opening the main menu to temporarily disable this setting.", nil)
|
||||||
|
c1:nil c1tt:nil
|
||||||
|
c2:Pref_groupUnreadOnly c2tt:NSLocalizedString(@"hide group & feed folders with 0 unread articles", nil)
|
||||||
|
c3:Pref_feedUnreadOnly c3tt:NSLocalizedString(@"hide articles inside of feed folder", nil)];
|
||||||
|
|
||||||
[[self entry:NSLocalizedString(@"Limit number of articles", nil)
|
[self entry:NSLocalizedString(@"Truncate article title", nil)
|
||||||
c1:nil c2:nil c3:Pref_feedLimitArticles]
|
help:NSLocalizedString(@"Truncate article title after 60 characters. If a title is longer than that, show an ellipsis character “…” instead.", nil)
|
||||||
tooltip:NSLocalizedString(@"Display at most 40 articles in feed menu. Remaining articles will be hidden from view but are still there. Unread count may be confusing as it will also count unread and hidden articles.", nil)];
|
tip:nil
|
||||||
|
c1:nil c1tt:nil
|
||||||
|
c2:nil c2tt:nil
|
||||||
|
c3:Pref_feedTruncateTitle c3tt:NSLocalizedString(@"article title", nil)];
|
||||||
|
|
||||||
|
[self entry:NSLocalizedString(@"Limit number of articles", nil)
|
||||||
|
help:NSLocalizedString(@"Display at most 40 articles in feed menu. Remaining articles will be hidden from view but are still there. Unread count may be confusing as it will also count unread and hidden articles.", nil)
|
||||||
|
tip:nil
|
||||||
|
c1:nil c1tt:nil
|
||||||
|
c2:nil c2tt:nil
|
||||||
|
c3:Pref_feedLimitArticles c3tt:NSLocalizedString(@"in feed menu", nil)];
|
||||||
|
|
||||||
|
[[[[[NSView label:@"Note: you can hover over all options to display explanatory tooltips."]
|
||||||
|
multiline:NSMakeSize(100, 2 * HEIGHT_LABEL)] gray]
|
||||||
|
placeIn:self x:PAD_WIN yTop:self.y + PAD_L] sizeToRight:PAD_WIN];
|
||||||
return self;
|
return self;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Helper method for matrix table header icons
|
/// Helper method for matrix table header icons
|
||||||
static inline void ColumnIcon(id this, CGFloat x, const NSImageName img, NSString *ttip) {
|
static inline void ColumnIcon(id this, CGFloat x, const NSImageName img) {
|
||||||
[[[NSView imageView:img size:IconSize] placeIn:this x:x yTop:PAD_WIN] tooltip:ttip];
|
[[NSView imageView:img size:IconSize] placeIn:this x:x yTop:PAD_WIN];
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Helper method for generating a checkbox
|
/// Helper method for generating a checkbox
|
||||||
@@ -78,14 +119,22 @@ static inline NSButton* Checkbox(id this, CGFloat x, CGFloat y, NSString *key) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// Create new entry with 1-3 checkboxes and a descriptive label
|
/// Create new entry with 1-3 checkboxes and a descriptive label
|
||||||
- (NSTextField*)entry:(NSString*)label c1:(NSString*)pref1 c2:(NSString*)pref2 c3:(NSString*)pref3 {
|
- (NSTextField*)entry:(NSString*)label help:(NSString*)ttip tip:(NSString*)extraTip
|
||||||
|
c1:(NSString*)pref1 c1tt:(NSString*)ttip1
|
||||||
|
c2:(NSString*)pref2 c2tt:(NSString*)ttip2
|
||||||
|
c3:(NSString*)pref3 c3tt:(NSString*)ttip3
|
||||||
|
{
|
||||||
CGFloat y = self.y;
|
CGFloat y = self.y;
|
||||||
self.y += (PAD_S + HEIGHT_LABEL);
|
self.y += (PAD_S + HEIGHT_LABEL);
|
||||||
// TODO: localize: global, group, feed
|
// TODO: localize: global, group, feed
|
||||||
if (pref1) Checkbox(self, X__ + 2, y + 2, pref1).accessibilityLabel = [label stringByAppendingString:@" (global)"];
|
if (pref1) [Checkbox(self, X__ + 2, y + 2, pref1) tooltip:ttip1].accessibilityLabel = [label stringByAppendingString:@" (global)"];
|
||||||
if (pref2) Checkbox(self, _X_ + 2, y + 2, pref2).accessibilityLabel = [label stringByAppendingString:@" (group)"];
|
if (pref2) [Checkbox(self, _X_ + 2, y + 2, pref2) tooltip:ttip2].accessibilityLabel = [label stringByAppendingString:@" (group)"];
|
||||||
if (pref3) Checkbox(self, __X + 2, y + 2, pref3).accessibilityLabel = [label stringByAppendingString:@" (feed)"];
|
if (pref3) [Checkbox(self, __X + 2, y + 2, pref3) tooltip:ttip3].accessibilityLabel = [label stringByAppendingString:@" (feed)"];
|
||||||
return [[[NSView label:label] placeIn:self x:PAD_WIN + 3 * colWidth yTop:y] sizeToRight:PAD_WIN];
|
if (extraTip != nil) {
|
||||||
|
label = [label stringByAppendingString:@" *"];
|
||||||
|
ttip = [ttip stringByAppendingFormat:@"\n\nTip: %@", extraTip];
|
||||||
|
}
|
||||||
|
return [[[[NSView label:label] placeIn:self x:PAD_WIN + 3 * colWidth yTop:y] sizeToRight:PAD_WIN] tooltip:ttip];
|
||||||
}
|
}
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|||||||
@@ -14,6 +14,10 @@
|
|||||||
@property (strong) NSStatusItem *statusItem;
|
@property (strong) NSStatusItem *statusItem;
|
||||||
@property (assign) NSInteger unreadCountTotal;
|
@property (assign) NSInteger unreadCountTotal;
|
||||||
@property (weak) NSMenuItem *updateAllItem;
|
@property (weak) NSMenuItem *updateAllItem;
|
||||||
|
/// Set to `true` if user toggled the `"Show Hidden Articles"` menu option.
|
||||||
|
@property (assign) BOOL optShowHidden;
|
||||||
|
/// Set to `true` if menu bar was opened while holding down option-key.
|
||||||
|
@property (assign) BOOL holdingOptKey;
|
||||||
@end
|
@end
|
||||||
|
|
||||||
@implementation BarStatusItem
|
@implementation BarStatusItem
|
||||||
@@ -150,9 +154,10 @@
|
|||||||
#pragma mark - Main Menu Handling
|
#pragma mark - Main Menu Handling
|
||||||
|
|
||||||
-(void)menuWillOpen:(NSMenu *)menu {
|
-(void)menuWillOpen:(NSMenu *)menu {
|
||||||
|
self.holdingOptKey = NSEvent.modifierFlags & NSEventModifierFlagOption;
|
||||||
_mainMenu = menu; // autoreleased once closed
|
_mainMenu = menu; // autoreleased once closed
|
||||||
self.barMenu = [[BarMenu alloc] initWithStatusItem:self];
|
self.barMenu = [[BarMenu alloc] initWithStatusItem:self];
|
||||||
self.barMenu.showHidden = NSEvent.modifierFlags & NSEventModifierFlagOption;
|
self.barMenu.showHidden = self.optShowHidden || self.holdingOptKey;
|
||||||
|
|
||||||
[self insertMainMenuHeader:menu];
|
[self insertMainMenuHeader:menu];
|
||||||
[self.barMenu menuNeedsUpdate:menu];
|
[self.barMenu menuNeedsUpdate:menu];
|
||||||
@@ -166,6 +171,7 @@
|
|||||||
self.barMenu = nil;
|
self.barMenu = nil;
|
||||||
self.statusItem.menu = [[NSMenu alloc] initWithTitle:@"M"];
|
self.statusItem.menu = [[NSMenu alloc] initWithTitle:@"M"];
|
||||||
self.statusItem.menu.delegate = self;
|
self.statusItem.menu.delegate = self;
|
||||||
|
self.holdingOptKey = NO;
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)insertMainMenuHeader:(NSMenu*)menu {
|
- (void)insertMainMenuHeader:(NSMenu*)menu {
|
||||||
@@ -174,6 +180,20 @@
|
|||||||
pause.target = self;
|
pause.target = self;
|
||||||
if ([UpdateScheduler isPaused])
|
if ([UpdateScheduler isPaused])
|
||||||
pause.title = NSLocalizedString(@"Resume Updates", nil);
|
pause.title = NSLocalizedString(@"Resume Updates", nil);
|
||||||
|
|
||||||
|
// 'show hidden articles' item
|
||||||
|
if (UserPrefsBool(Pref_globalToggleHidden)) {
|
||||||
|
NSMenuItem *toggleHidden = [menu addItemWithTitle:NSLocalizedString(@"Show Hidden Articles", nil) action:@selector(toggleHiddenArticles) keyEquivalent:@"h"];
|
||||||
|
toggleHidden.target = self;
|
||||||
|
toggleHidden.enabled = !self.holdingOptKey && (UserPrefsBool(Pref_groupUnreadOnly) || UserPrefsBool(Pref_feedUnreadOnly));
|
||||||
|
[toggleHidden setState:self.barMenu.showHidden ? NSControlStateValueOn : NSControlStateValueOff];
|
||||||
|
if (!toggleHidden.enabled) {
|
||||||
|
toggleHidden.toolTip = self.holdingOptKey
|
||||||
|
? NSLocalizedString(@"Option disabled because overwritten by holding down option-key.", nil)
|
||||||
|
: NSLocalizedString(@"Option disabled because appearance setting for “Show only unread” is disabled.", nil);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// 'Update all feeds' item
|
// 'Update all feeds' item
|
||||||
if (UserPrefsBool(Pref_globalUpdateAll)) {
|
if (UserPrefsBool(Pref_globalUpdateAll)) {
|
||||||
NSMenuItem *updateAll = [menu addItemWithTitle:NSLocalizedString(@"Update all feeds", nil) action:@selector(updateAllFeeds) keyEquivalent:@""];
|
NSMenuItem *updateAll = [menu addItemWithTitle:NSLocalizedString(@"Update all feeds", nil) action:@selector(updateAllFeeds) keyEquivalent:@""];
|
||||||
@@ -191,6 +211,12 @@
|
|||||||
[self updateBarIcon];
|
[self updateBarIcon];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Called when user clicks on 'Show Hidden Articles' (main menu only).
|
||||||
|
- (void)toggleHiddenArticles {
|
||||||
|
self.optShowHidden = !self.optShowHidden;
|
||||||
|
self.barMenu.showHidden = self.optShowHidden;
|
||||||
|
}
|
||||||
|
|
||||||
/// Called when user clicks on 'Update all feeds' (main menu only).
|
/// Called when user clicks on 'Update all feeds' (main menu only).
|
||||||
- (void)updateAllFeeds {
|
- (void)updateAllFeeds {
|
||||||
// [self asyncReloadUnreadCount]; // should not be necessary
|
// [self asyncReloadUnreadCount]; // should not be necessary
|
||||||
|
|||||||
Reference in New Issue
Block a user