9 Commits

Author SHA1 Message Date
relikd
51e1f07531 Version 1.2.1 release 2023-06-17 17:07:00 +02:00
relikd
b21cc20746 chore: update about page 2023-06-17 16:53:10 +02:00
relikd
be600b6c5f fix: initial autoresize on about page 2023-06-17 16:31:34 +02:00
relikd
a9c3ccc1f7 fix: use actual FlexibleSpace toolbar item 2023-06-17 16:31:34 +02:00
relikd
c4c5559d2d fix: autoresize issues (the 2nd) 2023-06-17 16:31:26 +02:00
relikd
68b25d10dd fix: auto column width for Feeds 2023-06-16 21:46:01 +02:00
relikd
24c785662a ref: remove Carthage dependency 2023-06-16 20:46:42 +02:00
relikd
2a589f51a8 fix: autoresize on Ventura 2023-06-16 19:08:26 +02:00
relikd
30527d50e6 fix: add missing changelog link 2022-10-01 18:14:59 +02:00
14 changed files with 98 additions and 61 deletions

View File

@@ -8,6 +8,16 @@ and this project does adhere to [Semantic Versioning](https://semver.org/spec/v2
## [Unreleased]
## [1.2.1] 2023-06-17
### Added
- Universal binary (Intel+AppleSilicon)
### Fixed
- Autoresize issues of UI elements in macOS Ventura
- Flexible width TabBarItem
- Updated About page (removed dead link)
## [1.2.0] 2022-10-01
### Added
- *UI*: Add option to hide read articles (show only unread)
@@ -158,7 +168,9 @@ and this project does adhere to [Semantic Versioning](https://semver.org/spec/v2
Initial release
[Unreleased]: https://github.com/relikd/baRSS/compare/v1.1.3...HEAD
[Unreleased]: https://github.com/relikd/baRSS/compare/v1.2.1...HEAD
[1.2.1]: https://github.com/relikd/baRSS/compare/v1.2.0...v1.2.1
[1.2.0]: https://github.com/relikd/baRSS/compare/v1.1.3...v1.2.0
[1.1.3]: https://github.com/relikd/baRSS/compare/v1.1.2...v1.1.3
[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

View File

@@ -1 +0,0 @@
github "relikd/RSXML2" "v2.0.1"

View File

@@ -1 +0,0 @@
github "relikd/RSXML2" "v2.0.1"

View File

@@ -42,18 +42,20 @@ Go to [releases](https://github.com/relikd/baRSS/releases) and downloaded the la
Searching for the App Store release? Read this [notice](#app-store-notice).
### Build from source
You'll need Xcode and [Carthage](https://github.com/Carthage/Carthage#installing-carthage).
The latter is optional, you can build the [RSXML2] library from source instead.
Carthage just makes it more convenient.
Download and unzip this project, navigate to the root folder and run `carthage bootstrap --platform macOS`.
You'll need Xcode, [RSXML2] \(required), and [QLOPML] \(optional).
```sh
git clone https://github.com/relikd/baRSS
git clone https://github.com/relikd/RSXML2
git clone https://github.com/relikd/QLOPML
```
Next, you need to clone [QLOPML](https://github.com/relikd/QLOPML) in the same folder where this project is.
Alternatively, you can simply delete the `QLOPML` project reference without much harm.
`QLOPML` is a Quick Look plugin for `.opml` files.
It will display the file contents whenever you hit spacebar.
That's it.
Open Xcode and build the project.
Open `baRSS/baRSS.xcodeproj` and build the project.
Note, there are some compiler flags that append 'beta' to the development release.
If you prefer the optimized release version go to `Product > Archive`.
@@ -165,7 +167,7 @@ But on the other hand, now it is macOS 10.12 compatible.
### 3rd Party Libraries
This project uses a modified version of Brent Simmons' [RSXML](https://github.com/brentsimmons/RSXML) for feed parsing.
This project uses a modified version of Brent Simmons' [RSXML] for feed parsing.
[RSXML2] is licensed under a MIT license (same as this project).
@@ -176,4 +178,6 @@ This project uses a modified version of Brent Simmons' [RSXML](https://github.co
- First prototype used __feedparser python__ library
[QLOPML]: https://github.com/relikd/QLOPML
[RSXML2]: https://github.com/relikd/RSXML2
[RSXML]: https://github.com/brentsimmons/RSXML

View File

@@ -14,9 +14,6 @@
54209E942117325100F3B5EF /* DrawImage.m in Sources */ = {isa = PBXBuildFile; fileRef = 54209E932117325100F3B5EF /* DrawImage.m */; };
544B011A2114B41200386E5C /* ModalSheet.m in Sources */ = {isa = PBXBuildFile; fileRef = 544B01192114B41200386E5C /* ModalSheet.m */; };
544B011D2114EE9100386E5C /* AppHook.m in Sources */ = {isa = PBXBuildFile; fileRef = 544B011C2114EE9100386E5C /* AppHook.m */; };
544DCCB9212A2B4D002DBC46 /* RSXML2.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 544DCCB8212A2B4D002DBC46 /* RSXML2.framework */; };
544DCCBA212A2B4D002DBC46 /* RSXML2.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 544DCCB8212A2B4D002DBC46 /* RSXML2.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
544DCCBE212A2B6F002DBC46 /* RSXML2.framework.dSYM in CopyFiles */ = {isa = PBXBuildFile; fileRef = 544DCCBD212A2B6F002DBC46 /* RSXML2.framework.dSYM */; };
54501010230E9C8600F0B165 /* FeedDownload.m in Sources */ = {isa = PBXBuildFile; fileRef = 5450100F230E9C8600F0B165 /* FeedDownload.m */; };
546A6A2922C583390034E806 /* SettingsGeneralView.m in Sources */ = {isa = PBXBuildFile; fileRef = 54D857D122802309001BA1C8 /* SettingsGeneralView.m */; };
546A6A2C22C584AF0034E806 /* SettingsAppearanceView.m in Sources */ = {isa = PBXBuildFile; fileRef = 546A6A2A22C584AF0034E806 /* SettingsAppearanceView.m */; };
@@ -25,6 +22,8 @@
546FC44321189975007CC3A3 /* SettingsGeneral.m in Sources */ = {isa = PBXBuildFile; fileRef = 546FC44121189975007CC3A3 /* SettingsGeneral.m */; };
5477D34E21233C62002BA27F /* FeedGroup+Ext.m in Sources */ = {isa = PBXBuildFile; fileRef = 5477D34D21233C62002BA27F /* FeedGroup+Ext.m */; };
5478DF04225A7AE200D30C64 /* SettingsFeedsView.m in Sources */ = {isa = PBXBuildFile; fileRef = 5478DF03225A7AE200D30C64 /* SettingsFeedsView.m */; };
5483296C2A3CDC38000688B9 /* RSXML2.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 548329652A3CDB22000688B9 /* RSXML2.framework */; };
5483296D2A3CDC38000688B9 /* RSXML2.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 548329652A3CDB22000688B9 /* RSXML2.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
548C6D0A230C33DE003A1AAF /* NSURL+Ext.m in Sources */ = {isa = PBXBuildFile; fileRef = 548C6D09230C33DE003A1AAF /* NSURL+Ext.m */; };
5491005D2331435E00858AE2 /* Download3rdParty.m in Sources */ = {isa = PBXBuildFile; fileRef = 5491005C2331435E00858AE2 /* Download3rdParty.m */; };
54910067233A4D4000858AE2 /* URLScheme.m in Sources */ = {isa = PBXBuildFile; fileRef = 54910066233A4D4000858AE2 /* URLScheme.m */; };
@@ -59,6 +58,20 @@
/* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */
548329642A3CDB22000688B9 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 5483295E2A3CDB22000688B9 /* RSXML2.xcodeproj */;
proxyType = 2;
remoteGlobalIDString = 84F22C0D1B52DDEA000060CE;
remoteInfo = RSXML2;
};
548329662A3CDB22000688B9 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 5483295E2A3CDB22000688B9 /* RSXML2.xcodeproj */;
proxyType = 2;
remoteGlobalIDString = 84F22C171B52DDEA000060CE;
remoteInfo = RSXML2Tests;
};
54A2D63722EF8193007C61F3 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 54A2D62E22EF8183007C61F3 /* QLOPML.xcodeproj */;
@@ -75,7 +88,7 @@
dstPath = "";
dstSubfolderSpec = 10;
files = (
544DCCBA212A2B4D002DBC46 /* RSXML2.framework in Embed Frameworks */,
5483296D2A3CDC38000688B9 /* RSXML2.framework in Embed Frameworks */,
);
name = "Embed Frameworks";
runOnlyForDeploymentPostprocessing = 0;
@@ -86,7 +99,6 @@
dstPath = "";
dstSubfolderSpec = 16;
files = (
544DCCBE212A2B6F002DBC46 /* RSXML2.framework.dSYM in CopyFiles */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -119,8 +131,6 @@
544B01192114B41200386E5C /* ModalSheet.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ModalSheet.m; sourceTree = "<group>"; };
544B011B2114EE9100386E5C /* AppHook.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AppHook.h; sourceTree = "<group>"; };
544B011C2114EE9100386E5C /* AppHook.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AppHook.m; sourceTree = "<group>"; };
544DCCB8212A2B4D002DBC46 /* RSXML2.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = RSXML2.framework; path = Carthage/Build/Mac/RSXML2.framework; sourceTree = "<group>"; };
544DCCBD212A2B6F002DBC46 /* RSXML2.framework.dSYM */ = {isa = PBXFileReference; lastKnownFileType = wrapper.dsym; name = RSXML2.framework.dSYM; path = Carthage/Build/Mac/RSXML2.framework.dSYM; sourceTree = "<group>"; };
5450100E230E9C8600F0B165 /* FeedDownload.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FeedDownload.h; sourceTree = "<group>"; };
5450100F230E9C8600F0B165 /* FeedDownload.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = FeedDownload.m; sourceTree = "<group>"; };
546A6A2A22C584AF0034E806 /* SettingsAppearanceView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SettingsAppearanceView.m; sourceTree = "<group>"; };
@@ -135,6 +145,7 @@
5477D34D21233C62002BA27F /* FeedGroup+Ext.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "FeedGroup+Ext.m"; sourceTree = "<group>"; };
5478DF02225A7AE200D30C64 /* SettingsFeedsView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SettingsFeedsView.h; sourceTree = "<group>"; };
5478DF03225A7AE200D30C64 /* SettingsFeedsView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SettingsFeedsView.m; sourceTree = "<group>"; };
5483295E2A3CDB22000688B9 /* RSXML2.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RSXML2.xcodeproj; path = ../RSXML2/RSXML2.xcodeproj; sourceTree = "<group>"; };
54892F1D2235285700271CBA /* CHANGELOG.md */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = net.daringfireball.markdown; path = CHANGELOG.md; sourceTree = "<group>"; };
548C6D08230C33DE003A1AAF /* NSURL+Ext.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "NSURL+Ext.h"; sourceTree = "<group>"; };
548C6D09230C33DE003A1AAF /* NSURL+Ext.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "NSURL+Ext.m"; sourceTree = "<group>"; };
@@ -204,7 +215,7 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
544DCCB9212A2B4D002DBC46 /* RSXML2.framework in Frameworks */,
5483296C2A3CDC38000688B9 /* RSXML2.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -247,15 +258,6 @@
path = NSCategories;
sourceTree = "<group>";
};
544FBD4321064AEB008A260C /* Frameworks */ = {
isa = PBXGroup;
children = (
544DCCB8212A2B4D002DBC46 /* RSXML2.framework */,
544DCCBD212A2B6F002DBC46 /* RSXML2.framework.dSYM */,
);
name = Frameworks;
sourceTree = "<group>";
};
546FC44D2118B357007CC3A3 /* Preferences */ = {
isa = PBXGroup;
children = (
@@ -271,6 +273,15 @@
path = Preferences;
sourceTree = "<group>";
};
5483295F2A3CDB22000688B9 /* Products */ = {
isa = PBXGroup;
children = (
548329652A3CDB22000688B9 /* RSXML2.framework */,
548329672A3CDB22000688B9 /* RSXML2Tests.xctest */,
);
name = Products;
sourceTree = "<group>";
};
54A07A8322105E0800082C51 /* Core Data */ = {
isa = PBXGroup;
children = (
@@ -305,8 +316,8 @@
54892F1D2235285700271CBA /* CHANGELOG.md */,
54ACC27E21061B3B0020715F /* baRSS */,
54A2D62E22EF8183007C61F3 /* QLOPML.xcodeproj */,
5483295E2A3CDB22000688B9 /* RSXML2.xcodeproj */,
54ACC27D21061B3B0020715F /* Products */,
544FBD4321064AEB008A260C /* Frameworks */,
);
sourceTree = "<group>";
};
@@ -498,6 +509,10 @@
ProductGroup = 54A2D63422EF8193007C61F3 /* Products */;
ProjectRef = 54A2D62E22EF8183007C61F3 /* QLOPML.xcodeproj */;
},
{
ProductGroup = 5483295F2A3CDB22000688B9 /* Products */;
ProjectRef = 5483295E2A3CDB22000688B9 /* RSXML2.xcodeproj */;
},
);
projectRoot = "";
targets = (
@@ -507,6 +522,20 @@
/* End PBXProject section */
/* Begin PBXReferenceProxy section */
548329652A3CDB22000688B9 /* RSXML2.framework */ = {
isa = PBXReferenceProxy;
fileType = wrapper.framework;
path = RSXML2.framework;
remoteRef = 548329642A3CDB22000688B9 /* PBXContainerItemProxy */;
sourceTree = BUILT_PRODUCTS_DIR;
};
548329672A3CDB22000688B9 /* RSXML2Tests.xctest */ = {
isa = PBXReferenceProxy;
fileType = wrapper.cfbundle;
path = RSXML2Tests.xctest;
remoteRef = 548329662A3CDB22000688B9 /* PBXContainerItemProxy */;
sourceTree = BUILT_PRODUCTS_DIR;
};
54A2D63822EF8193007C61F3 /* QLOPML.qlgenerator */ = {
isa = PBXReferenceProxy;
fileType = wrapper.cfbundle;
@@ -754,7 +783,6 @@
FRAMEWORK_SEARCH_PATHS = (
"$(inherited)",
"$(PROJECT_DIR)",
"$(PROJECT_DIR)/Carthage/Build/Mac",
);
GCC_PREPROCESSOR_DEFINITIONS = (
"APP_NAME=\"\\@\\\"$(PRODUCT_NAME)\\\"\"",
@@ -809,7 +837,6 @@
FRAMEWORK_SEARCH_PATHS = (
"$(inherited)",
"$(PROJECT_DIR)",
"$(PROJECT_DIR)/Carthage/Build/Mac",
);
GCC_PREPROCESSOR_DEFINITIONS = (
"APP_NAME=\"\\@\\\"$(PRODUCT_NAME)\\\"\"",

View File

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

View File

@@ -45,7 +45,7 @@
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>1.2.0</string>
<string>1.2.1</string>
<key>CFBundleURLTypes</key>
<array>
<dict>
@@ -70,7 +70,7 @@
</dict>
</array>
<key>CFBundleVersion</key>
<string>14698</string>
<string>14835</string>
<key>LSApplicationCategoryType</key>
<string>public.app-category.news</string>
<key>LSMinimumSystemVersion</key>

View File

@@ -4,7 +4,7 @@
@implementation SettingsAboutView
- (instancetype)init {
self = [super initWithFrame: NSZeroRect];
self = [super initWithFrame:NSMakeRect(0, 0, 320, 327)];
NSDictionary *info = [[NSBundle mainBundle] infoDictionary];
NSString *version = [NSString stringWithFormat:NSLocalizedString(@"Version %@", nil), info[@"CFBundleShortVersionString"]];
#if DEBUG // append build number, e.g., '0.9.4 (9906)'
@@ -33,16 +33,16 @@
NSMutableAttributedString *mas = [NSMutableAttributedString new];
[mas beginEditing];
[self str:mas add:@"Programming\n" bold:YES];
[self str:mas add:@"Oleg Geier\n\n" bold:NO];
[self str:mas add:@"Source Code Available\n" bold:YES];
[self str:mas add:@"Oleg Geier\n" bold:NO];
[self str:mas add:@"\nSource Code Available\n" bold:YES];
[self str:mas add:@"github.com" link:@"https://github.com/relikd/baRSS"];
[self str:mas add:@" (MIT License)\nor " bold:NO];
[self str:mas add:@"gitlab.com" link:@"https://gitlab.com/relikd/baRSS"];
[self str:mas add:@" (MIT License)\n\n" bold:NO];
[self str:mas add:@"3rd-Party Libraries\n" bold:YES];
[self str:mas add:@" (MIT License)\n" bold:NO];
[self str:mas add:@"\nLibraries\n" bold:YES];
[self str:mas add:@"RSXML2" link:@"https://github.com/relikd/RSXML2"];
[self str:mas add:@" (MIT License)" bold:NO];
[self str:mas add:@"\n\n\n\nOptions\n" bold:YES];
[self str:mas add:@" (MIT License)\n" bold:NO];
[self str:mas add:@"QLOPML" link:@"https://github.com/relikd/QLOPML"];
[self str:mas add:@" (MIT License)\n" bold:NO];
[self str:mas add:@"\n\n\nOptions\n" bold:YES];
[self str:mas add:@"Fix Cache\n" link:@"barss:config/fixcache"];
[self str:mas add:@"Backup now\n" link:@"barss:backup/show"];
[mas endEditing];

View File

@@ -16,7 +16,7 @@
@implementation SettingsAppearanceView
- (instancetype)init {
self = [super initWithFrame: NSZeroRect];
self = [super initWithFrame:NSMakeRect(0, 0, 320, 327)];
// Insert matrix header (icons above checkbox matrix)
ColumnIcon(self, X__, RSSImageSettingsGlobal, NSLocalizedString(@"Show in menu bar", nil));
ColumnIcon(self, _X_, RSSImageSettingsGroup, NSLocalizedString(@"Show in group menu", nil));

View File

@@ -14,7 +14,7 @@
NSView *labels = [NSView labelColumn:lbls rowHeight:HEIGHT_INPUTFIELD padding:PAD_S];
self = [super initWithFrame:NSMakeRect(0, 0, 0, NSHeight(labels.frame))];
self = [super initWithFrame:NSMakeRect(0, 0, 320, NSHeight(labels.frame))];
self.autoresizingMask = NSViewWidthSizable | NSViewHeightSizable;
CGFloat x = NSWidth(labels.frame) + PAD_S;

View File

@@ -14,7 +14,7 @@
@return Centered view without autoresizing.
*/
- (instancetype)initWithRefreshInterval:(NSDictionary*)info articleCount:(NSUInteger)count callback:(nullable id<RefreshIntervalButtonDelegate>)callback {
self = [super initWithFrame:NSZeroRect];
self = [super initWithFrame:NSMakeRect(0, 0, 320, 327)];
self.autoresizesSubviews = NO;
NSTextField *dateView = [self viewForArticlesCount:count latest:info];

View File

@@ -13,7 +13,7 @@
@implementation SettingsFeedsView
- (instancetype)initWithController:(SettingsFeeds*)delegate {
self = [super initWithFrame:NSZeroRect];
self = [super initWithFrame:NSMakeRect(0, 0, 201, 327)];
if (self) {
self.controller = delegate; // make sure its first
self.outline = [self generateOutlineView]; // uses self.controller
@@ -60,7 +60,7 @@
- (void)setOutlineColumns:(NSOutlineView*)outline {
NSTableColumn *colName = [[NSTableColumn alloc] initWithIdentifier:CustomCellName];
colName.title = NSLocalizedString(@"Name", nil);
colName.width = 10000;
colName.width = 201;
colName.maxWidth = 10000;
colName.resizingMask = NSTableColumnAutoresizingMask;
[outline addTableColumn:colName];

View File

@@ -5,7 +5,7 @@
@implementation SettingsGeneralView
- (instancetype)initWithController:(SettingsGeneral*)controller {
self = [super initWithFrame:NSZeroRect];
self = [super initWithFrame:NSMakeRect(0, 0, 320, 327)];
// Change default feed reader application
NSTextField *l1 = [[NSView label:NSLocalizedString(@"Default feed reader:", nil)] placeIn:self x:PAD_WIN yTop:PAD_WIN + 3];
NSButton *help = [[[NSView helpButton] action:@selector(clickHowToDefaults:) target:controller] placeIn:self xRight:PAD_WIN yTop:PAD_WIN];

View File

@@ -16,18 +16,13 @@
if (self) {
self.tabStyle = NSTabViewControllerTabStyleToolbar;
self.transitionOptions = NSViewControllerTransitionNone;
NSTabViewItem *flexibleWidth = [[NSTabViewItem alloc] initWithIdentifier:NSToolbarFlexibleSpaceItemIdentifier];
flexibleWidth.viewController = [NSViewController new];
self.tabViewItems = @[
TabItem(NSImageNamePreferencesGeneral, NSLocalizedString(@"General", nil), [SettingsGeneral class]),
TabItem(NSImageNameUserAccounts, NSLocalizedString(@"Feeds", nil), [SettingsFeeds class]),
TabItem(NSImageNameFontPanel, NSLocalizedString(@"Appearance", nil), [SettingsAppearance class]),
flexibleWidth,
TabItem(NSImageNameInfo, NSLocalizedString(@"About", nil), [SettingsAbout class]),
];
[self switchToTab: UserPrefsUInt(Pref_prefSelectedTab)];
self.selectedTabViewItemIndex = -1;
}
return self;
}
@@ -43,19 +38,16 @@ static inline NSTabViewItem* TabItem(NSImageName imageName, NSString *text, Clas
/// Safely set selected index without out of bounds exception
- (__kindof NSViewController*)switchToTab:(NSUInteger)index {
if (index < 0 || index >= self.tabViewItems.count)
return nil;
NSTabViewItem *tab = self.tabViewItems[index];
if (tab.identifier == NSToolbarFlexibleSpaceItemIdentifier)
return nil;
index = 0;
self.selectedTabViewItemIndex = (NSInteger)index;
return [tab viewController];
return [self.tabViewItems[index] viewController];
}
/// Delegate method, store last selected tab to user preferences
- (void)tabView:(NSTabView*)tabView didSelectTabViewItem:(nullable NSTabViewItem*)tabViewItem {
[super tabView:tabView didSelectTabViewItem:tabViewItem];
NSInteger newIndex = self.selectedTabViewItemIndex;
if (UserPrefsInt(Pref_prefSelectedTab) != newIndex)
if (newIndex != -1 && UserPrefsInt(Pref_prefSelectedTab) != newIndex)
UserPrefsSetInt(Pref_prefSelectedTab, newIndex);
}
@@ -70,7 +62,10 @@ static inline NSTabViewItem* TabItem(NSImageName imageName, NSString *text, Clas
w.contentMinSize = NSMakeSize(320, 327);
w.windowController.shouldCascadeWindows = YES;
w.title = [NSString stringWithFormat:NSLocalizedString(@"%@ Preferences", nil), NSProcessInfo.processInfo.processName];
w.contentViewController = [PrefTabs new];
PrefTabs *tabController = [PrefTabs new];
w.contentViewController = tabController;
[w.toolbar insertItemWithItemIdentifier:NSToolbarSpaceItemIdentifier atIndex:3];
[w.toolbar insertItemWithItemIdentifier:NSToolbarFlexibleSpaceItemIdentifier atIndex:4];
w.delegate = w;
NSWindowPersistableFrameDescriptor prevFrame = UserPrefsString(Pref_prefWindowFrame);
if (!prevFrame) {
@@ -79,6 +74,7 @@ static inline NSTabViewItem* TabItem(NSImageName imageName, NSString *text, Clas
} else {
[w setFrameFromString:prevFrame];
}
[tabController switchToTab:UserPrefsUInt(Pref_prefSelectedTab)];
return w;
}