5 Commits

Author SHA1 Message Date
relikd
b3940f103a Workaround for issue #7 2020-11-27 17:51:27 +01:00
relikd
239527908f Fix colorUnreadIndicator not being used 2020-11-27 17:42:13 +01:00
relikd
7df70a7936 update changelog 2020-08-31 21:26:44 +02:00
relikd
e8c4c06d33 Fix an issue where indices weren't updated, related to #6 2020-08-31 21:14:13 +02:00
relikd
a9c0e64689 Fix error log 'extractOptions unknown hint identifier' 2020-08-31 20:44:41 +02:00
12 changed files with 59 additions and 27 deletions

View File

@@ -8,7 +8,18 @@ and this project does adhere to [Semantic Versioning](https://semver.org/spec/v2
## [Unreleased] ## [Unreleased]
## [1.1.0] - 2020-01-17 ## [1.1.2] 2020-11-27
### Fixed
- Fixes hidden color option for marking unread entries. Unread menu entries did use `colorStatusIconTint` instead of `colorUnreadIndicator` (thanks @tchek)
- Workaround for not displaying status bar highlight color in macOS 11.0 (issue #7)
## [1.1.1] 2020-08-31
### Fixed
- Feed indices weren't updated properly which resulted in empty feed menus (issue: #6)
## [1.1.0] 2020-01-17
### Added ### Added
- *QuickLook*: Thumbnail previews for OPML files (QLOPML v1.3) - *QuickLook*: Thumbnail previews for OPML files (QLOPML v1.3)
- *Status Bar Menu*: Tint menu bar icon with Accent color (macOS 10.14+) - *Status Bar Menu*: Tint menu bar icon with Accent color (macOS 10.14+)
@@ -17,19 +28,19 @@ and this project does adhere to [Semantic Versioning](https://semver.org/spec/v2
- Resolved Xcode warnings in Xcode 11 - Resolved Xcode warnings in Xcode 11
## [1.0.2] - 2019-10-25 ## [1.0.2] 2019-10-25
### Fixed ### Fixed
- *Status Bar Menu*: Preferences could not be opened on macOS 10.15 - *Status Bar Menu*: Preferences could not be opened on macOS 10.15
- *Status Bar Menu*: Menu flickering resulting in a hang on macOS 10.15 - *Status Bar Menu*: Menu flickering resulting in a hang on macOS 10.15
- *UI*: Text color in `About` tab - *UI*: Text color in `About` tab
## [1.0.1] - 2019-10-04 ## [1.0.1] 2019-10-04
### Fixed ### Fixed
- Crash on macOS 10.14 due to a `CGColorRef` null pointer - Crash on macOS 10.14 due to a `CGColorRef` null pointer
## [1.0.0] - 2019-10-03 ## [1.0.0] 2019-10-03
### Added ### Added
- App Signing - App Signing
- Sandboxing & hardened runtime environment - Sandboxing & hardened runtime environment
@@ -86,7 +97,7 @@ and this project does adhere to [Semantic Versioning](https://semver.org/spec/v2
- *UI:* Mark unread articles with blue dot, instead of tick mark - *UI:* Mark unread articles with blue dot, instead of tick mark
## [0.9.4] - 2019-04-02 ## [0.9.4] 2019-04-02
### Fixed ### Fixed
- Article order got mixed up for some feeds (issue: #4) - Article order got mixed up for some feeds (issue: #4)
- If multiple consecutive items reappear in the middle of the feed mark them read - If multiple consecutive items reappear in the middle of the feed mark them read
@@ -95,7 +106,7 @@ and this project does adhere to [Semantic Versioning](https://semver.org/spec/v2
- *UI:* Removed checkbox `Start on login`. Use Preferences > Users > Login Items instead. - *UI:* Removed checkbox `Start on login`. Use Preferences > Users > Login Items instead.
## [0.9.3] - 2019-03-14 ## [0.9.3] 2019-03-14
### Added ### Added
- Changelog - Changelog
- *UI:* Show body tag in article tooltip if abstract tag is empty - *UI:* Show body tag in article tooltip if abstract tag is empty
@@ -105,7 +116,7 @@ and this project does adhere to [Semantic Versioning](https://semver.org/spec/v2
- Fixed update for feeds where all article URLs point to the same resource (issue: #3) - Fixed update for feeds where all article URLs point to the same resource (issue: #3)
## [0.9.2] - 2019-03-07 ## [0.9.2] 2019-03-07
### Added ### Added
- Limit number of articles that are displayed in feed menu (issue: #2) - Limit number of articles that are displayed in feed menu (issue: #2)
@@ -115,7 +126,7 @@ and this project does adhere to [Semantic Versioning](https://semver.org/spec/v2
- libxml2 will ignore lower ascii characters (`0x00``0x1F`) - libxml2 will ignore lower ascii characters (`0x00``0x1F`)
## [0.9.1] - 2019-02-14 ## [0.9.1] 2019-02-14
### Added ### Added
- Mark single article as un/read (hold down option key and click on article) - Mark single article as un/read (hold down option key and click on article)
@@ -133,11 +144,13 @@ and this project does adhere to [Semantic Versioning](https://semver.org/spec/v2
- Remove html tags from abstract on save (not on display) - Remove html tags from abstract on save (not on display)
## [0.9] - 2019-02-11 ## [0.9] 2019-02-11
Initial release Initial release
[Unreleased]: https://github.com/relikd/baRSS/compare/v1.1.0...HEAD [Unreleased]: https://github.com/relikd/baRSS/compare/v1.1.2...HEAD
[1.1.2]: https://github.com/relikd/baRSS/compare/v1.1.1...v1.1.2
[1.1.1]: https://github.com/relikd/baRSS/compare/v1.1.0...v1.1.1
[1.1.0]: https://github.com/relikd/baRSS/compare/v1.0.2...v1.1.0 [1.1.0]: https://github.com/relikd/baRSS/compare/v1.0.2...v1.1.0
[1.0.2]: https://github.com/relikd/baRSS/compare/v1.0.1...v1.0.2 [1.0.2]: https://github.com/relikd/baRSS/compare/v1.0.1...v1.0.2
[1.0.1]: https://github.com/relikd/baRSS/compare/v1.0.0...v1.0.1 [1.0.1]: https://github.com/relikd/baRSS/compare/v1.0.0...v1.0.1

View File

@@ -108,7 +108,7 @@ ToDo
The following list is not exhaustive but rather a collection of nice things that will be added eventually. The following list is not exhaustive but rather a collection of nice things that will be added eventually.
I may postpone some until demand increases … I may postpone some until demand increases …
- [ ] Localizations - [ ] Localizations
- [ ] Feed generator for websites without feeds - [ ] Feed generator for websites without feeds
- [ ] Automatically choose best update interval (e.g., avg) - [ ] Automatically choose best update interval (e.g., avg)
- [ ] Sync with online services - [ ] Sync with online services
@@ -180,7 +180,7 @@ This project uses a modified version of Brent Simmons' [RSXML](https://github.co
##### Trivia ##### Trivia
- Start of project: __July 19, 2018__ - Start of project: __July 19, 2018__
- Estimated development time: __1953h+__ - Estimated development time: __1963h+__
- First prototype used __feedparser python__ library - First prototype used __feedparser python__ library

View File

@@ -462,7 +462,7 @@
54ACC27421061B3B0020715F /* Project object */ = { 54ACC27421061B3B0020715F /* Project object */ = {
isa = PBXProject; isa = PBXProject;
attributes = { attributes = {
LastUpgradeCheck = 0940; LastUpgradeCheck = 1200;
ORGANIZATIONNAME = relikd; ORGANIZATIONNAME = relikd;
TargetAttributes = { TargetAttributes = {
54ACC27B21061B3B0020715F = { 54ACC27B21061B3B0020715F = {
@@ -647,6 +647,7 @@
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
CLANG_WARN_STRICT_PROTOTYPES = YES; CLANG_WARN_STRICT_PROTOTYPES = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES; CLANG_WARN_SUSPICIOUS_MOVE = YES;
@@ -702,6 +703,7 @@
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
CLANG_WARN_STRICT_PROTOTYPES = YES; CLANG_WARN_STRICT_PROTOTYPES = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES; CLANG_WARN_SUSPICIOUS_MOVE = YES;

View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<Scheme <Scheme
LastUpgradeVersion = "1000" LastUpgradeVersion = "1200"
version = "1.3"> version = "1.3">
<BuildAction <BuildAction
parallelizeBuildables = "YES" parallelizeBuildables = "YES"

View File

@@ -196,7 +196,8 @@
if (self.articles.count == 0) { if (self.articles.count == 0) {
img = [NSImage imageNamed:NSImageNameCaution]; img = [NSImage imageNamed:NSImageNameCaution];
} else if (self.hasIcon) { } else if (self.hasIcon) {
img = [[NSImage alloc] initByReferencingURL:[self iconPath]]; NSData* data = [[NSData alloc] initWithContentsOfURL:[self iconPath]];
img = [[NSImage alloc] initWithData:data];
} else { } else {
img = [NSImage imageNamed:RSSImageDefaultRSSIcon]; img = [NSImage imageNamed:RSSImageDefaultRSSIcon];
} }

View File

@@ -89,10 +89,11 @@
- (void)setSortIndexIfChanged:(int32_t)sortIndex { - (void)setSortIndexIfChanged:(int32_t)sortIndex {
if (self.sortIndex != sortIndex) { if (self.sortIndex != sortIndex) {
self.sortIndex = sortIndex; self.sortIndex = sortIndex;
[self iterateSorted:NO overDescendantFeeds:^(Feed *feed, BOOL *cancel) {
[feed calculateAndSetIndexPathString];
}];
} }
// Otherwise move from 0.0 -> 0 will not trigger index path update
[self iterateSorted:NO overDescendantFeeds:^(Feed *feed, BOOL *cancel) {
[feed calculateAndSetIndexPathString];
}];
} }
/// Set @c name attribute but only if value differs. /// Set @c name attribute but only if value differs.

View File

@@ -147,7 +147,13 @@
return; return;
self.currentDownload = [[NSURLRequest requestWithURL:self.remoteURL] downloadTask:^(NSURL * _Nullable path, NSError * _Nullable error) { self.currentDownload = [[NSURLRequest requestWithURL:self.remoteURL] downloadTask:^(NSURL * _Nullable path, NSError * _Nullable error) {
if (error) path = nil; // will also nullify img if (error) path = nil; // will also nullify img
NSImage *img = path ? [[NSImage alloc] initByReferencingURL:path] : nil; NSImage *img;
if (path) {
NSData* data = [[NSData alloc] initWithContentsOfURL:path];
img = [[NSImage alloc] initWithData:data];
} else {
img = nil;
}
if (img.valid) { if (img.valid) {
// move image to temporary destination, otherwise dataTask: will delete it. // move image to temporary destination, otherwise dataTask: will delete it.
NSString *tmpFile = NSProcessInfo.processInfo.globallyUniqueString; NSString *tmpFile = NSProcessInfo.processInfo.globallyUniqueString;
@@ -166,7 +172,8 @@
if (self.canceled) if (self.canceled)
return; return;
NSURL *path = self.fileURL; NSURL *path = self.fileURL;
NSImage *img = [[NSImage alloc] initByReferencingURL:path]; NSData* data = [[NSData alloc] initWithContentsOfURL:path];
NSImage* img = [[NSImage alloc] initWithData:data];
if (!img.valid) { path = nil; img = nil; } if (!img.valid) { path = nil; img = nil; }
#if DEBUG && ENV_LOG_DOWNLOAD #if DEBUG && ENV_LOG_DOWNLOAD
printf("ICON %1.0fx%1.0f %s\n", img.size.width, img.size.height, self.remoteURL.absoluteString.UTF8String); printf("ICON %1.0fx%1.0f %s\n", img.size.width, img.size.height, self.remoteURL.absoluteString.UTF8String);

View File

@@ -45,7 +45,7 @@
<key>CFBundlePackageType</key> <key>CFBundlePackageType</key>
<string>APPL</string> <string>APPL</string>
<key>CFBundleShortVersionString</key> <key>CFBundleShortVersionString</key>
<string>1.1.0</string> <string>1.1.2</string>
<key>CFBundleURLTypes</key> <key>CFBundleURLTypes</key>
<array> <array>
<dict> <dict>
@@ -70,7 +70,7 @@
</dict> </dict>
</array> </array>
<key>CFBundleVersion</key> <key>CFBundleVersion</key>
<string>14603</string> <string>14633</string>
<key>LSApplicationCategoryType</key> <key>LSApplicationCategoryType</key>
<string>public.app-category.news</string> <string>public.app-category.news</string>
<key>LSMinimumSystemVersion</key> <key>LSMinimumSystemVersion</key>

View File

@@ -52,9 +52,9 @@
static dispatch_once_t onceToken; static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{ dispatch_once(&onceToken, ^{
if (@available(macOS 10.14, *)) { if (@available(macOS 10.14, *)) {
color = UserPrefsColor(Pref_colorStatusIconTint, [NSColor controlAccentColor]); color = UserPrefsColor(Pref_colorUnreadIndicator, [NSColor controlAccentColor]);
} else { } else {
color = UserPrefsColor(Pref_colorStatusIconTint, [NSColor systemBlueColor]); color = UserPrefsColor(Pref_colorUnreadIndicator, [NSColor systemBlueColor]);
} }
}); });
return color; return color;

View File

@@ -216,7 +216,13 @@
*/ */
- (void)faviconDownload:(FaviconDownload*)sender didFinish:(nullable NSURL*)path { - (void)faviconDownload:(FaviconDownload*)sender didFinish:(nullable NSURL*)path {
// Create image from favicon temporary file location or default icon if no favicon exists. // Create image from favicon temporary file location or default icon if no favicon exists.
NSImage *img = path ? [[NSImage alloc] initByReferencingURL:path] : [NSImage imageNamed:RSSImageDefaultRSSIcon]; NSImage *img;
if (path) {
NSData* data = [[NSData alloc] initWithContentsOfURL:path];
img = [[NSImage alloc] initWithData:data];
} else {
img = [NSImage imageNamed:RSSImageDefaultRSSIcon];
}
self.view.favicon.image = img; self.view.favicon.image = img;
self.faviconFile = path; self.faviconFile = path;
[self downloadComplete]; [self downloadComplete];

View File

@@ -44,7 +44,7 @@
[content setFrameSize: NSMakeSize(w, h)]; [content setFrameSize: NSMakeSize(w, h)];
// after content size, increase to window size // after content size, increase to window size
w += 2 * PAD_WIN; w += 2 * (NSInteger)PAD_WIN;
h += PAD_WIN + contentOffsetY; // the second PAD_WIN is already in contentOffsetY h += PAD_WIN + contentOffsetY; // the second PAD_WIN is already in contentOffsetY
NSWindowStyleMask style = NSWindowStyleMaskTitled | NSWindowStyleMaskResizable | NSWindowStyleMaskFullSizeContentView; NSWindowStyleMask style = NSWindowStyleMaskTitled | NSWindowStyleMaskResizable | NSWindowStyleMaskFullSizeContentView;

View File

@@ -121,7 +121,9 @@
BOOL tint = (self.unreadCountTotal > 0 && hasNet && UserPrefsBool(Pref_globalTintMenuIcon)); BOOL tint = (self.unreadCountTotal > 0 && hasNet && UserPrefsBool(Pref_globalTintMenuIcon));
self.statusItem.button.image = [NSImage imageNamed:(hasNet ? RSSImageMenuBarIconActive : RSSImageMenuBarIconPaused)]; self.statusItem.button.image = [NSImage imageNamed:(hasNet ? RSSImageMenuBarIconActive : RSSImageMenuBarIconPaused)];
if (@available(macOS 10.14, *)) { if (@available(macOS 11, *)) {
self.statusItem.button.image.template = !tint;
} else if (@available(macOS 10.14, *)) {
// There is no proper way to display tinted icon WITHOUT tinted text! // There is no proper way to display tinted icon WITHOUT tinted text!
// - using alternate image instead of tint: // - using alternate image instead of tint:
// icon & text stays black on highlight (but only in light mode) // icon & text stays black on highlight (but only in light mode)