From 8e3bca062bbcb30c8bc00b6f8c529ddd9135b8c8 Mon Sep 17 00:00:00 2001 From: Michael Starke Date: Tue, 3 Nov 2020 17:08:09 +0100 Subject: [PATCH] Fixed regression in Preferences preventing willShowTab and didShowTab from being called. --- MacPass/MPPreferencesWindowController.m | 24 ++++++++++++++++++------ MacPass/MPTabViewController.h | 3 +++ MacPass/MPTabViewController.m | 7 +++++++ MacPass/MacPass-Info.plist | 10 ++++++---- 4 files changed, 34 insertions(+), 10 deletions(-) diff --git a/MacPass/MPPreferencesWindowController.m b/MacPass/MPPreferencesWindowController.m index 8632075e..545faada 100644 --- a/MacPass/MPPreferencesWindowController.m +++ b/MacPass/MPPreferencesWindowController.m @@ -49,9 +49,21 @@ _tabViewController = [[MPTabViewController alloc] init]; _tabViewController.tabStyle = NSTabViewControllerTabStyleToolbar; _tabViewController.transitionOptions = NSViewControllerTransitionNone | NSViewControllerTransitionAllowUserInteraction; - + self.contentViewController = self.tabViewController; + _tabViewController.willSelectTabHandler = ^void(NSTabViewItem *item) { + if([item.viewController respondsToSelector:@selector(willShowTab)]) { + [(id)item.viewController willShowTab]; + } + }; + + _tabViewController.didSelectTabHandler = ^void(NSTabViewItem *item) { + if([item.viewController respondsToSelector:@selector(didShowTab)]) { + [(id)item.viewController didShowTab]; + } + }; + [self _setupDefaultPreferencesTabs]; } return self; @@ -124,10 +136,10 @@ - (void)_setupDefaultPreferencesTabs { NSArray*> *controllers = @[ [[MPGeneralPreferencesController alloc] init], - [[MPIntegrationPreferencesController alloc] init], - [[MPWorkflowPreferencesController alloc] init], - [[MPUpdatePreferencesController alloc] init], - [[MPPluginPreferencesController alloc] init] ]; + [[MPIntegrationPreferencesController alloc] init], + [[MPWorkflowPreferencesController alloc] init], + [[MPUpdatePreferencesController alloc] init], + [[MPPluginPreferencesController alloc] init] ]; for(NSViewController *controller in controllers) { NSString *identifier = controller.identifier; if([self.tabViewController tabViewItemForViewController:controller]) { @@ -140,7 +152,7 @@ NSTabViewItem *item = [NSTabViewItem tabViewItemWithViewController:controller]; item.identifier = controller.identifier; if([controller respondsToSelector:@selector(label)]) { - item.label = controller.label; + item.label = controller.label; } if([controller respondsToSelector:@selector(image)]) { item.image = controller.image; diff --git a/MacPass/MPTabViewController.h b/MacPass/MPTabViewController.h index 19da88c5..a47724a4 100644 --- a/MacPass/MPTabViewController.h +++ b/MacPass/MPTabViewController.h @@ -12,6 +12,9 @@ NS_ASSUME_NONNULL_BEGIN @interface MPTabViewController : NSTabViewController +@property (nonatomic, copy, nullable) void (^willSelectTabHandler)(NSTabViewItem *item); +@property (nonatomic, copy, nullable) void (^didSelectTabHandler)(NSTabViewItem *item); + @end NS_ASSUME_NONNULL_END diff --git a/MacPass/MPTabViewController.m b/MacPass/MPTabViewController.m index 464831cc..a8329b0a 100644 --- a/MacPass/MPTabViewController.m +++ b/MacPass/MPTabViewController.m @@ -33,6 +33,9 @@ - (void)tabView:(NSTabView *)tabView didSelectTabViewItem:(NSTabViewItem *)tabViewItem { [super tabView:tabView didSelectTabViewItem:tabViewItem]; [self _resizeWindowToFitTabView:tabViewItem]; + if(self.didSelectTabHandler) { + self.didSelectTabHandler(tabViewItem); + } } - (void)tabView:(NSTabView *)tabView willSelectTabViewItem:(NSTabViewItem *)tabViewItem { @@ -40,6 +43,10 @@ if(tabViewItem.view) { self.tabViewSizes[tabViewItem.identifier] = @(tabViewItem.view.frame.size); } + if(self.willSelectTabHandler) { + self.willSelectTabHandler(tabViewItem); + } + } diff --git a/MacPass/MacPass-Info.plist b/MacPass/MacPass-Info.plist index 9e474463..225465ff 100644 --- a/MacPass/MacPass-Info.plist +++ b/MacPass/MacPass-Info.plist @@ -63,6 +63,8 @@ ???? CFBundleVersion UNDEFINED + LSApplicationCategoryType + public.app-category.productivity LSMinimumSystemVersion ${MACOSX_DEPLOYMENT_TARGET} MPHelpURL @@ -77,16 +79,16 @@ MacPass accesses the Documents folder to load and save your databases and/or key files there NSDownloadsFolderUsageDescription MacPass accesses the Downloads folder to load and save your databases and/or key files there - NSNetworkVolumesUsageDescription - MacPass need access to Network Volumes to load and save your databases and/or key files there - NSRemovableVolumesUsageDescription - MacPass need access to Removable Volumes to load and save your databases and/or key files there NSHumanReadableCopyright Copyright © 2012-2020 HicknHack Software GmbH. All rights reserved. NSMainNibFile MainMenu + NSNetworkVolumesUsageDescription + MacPass need access to Network Volumes to load and save your databases and/or key files there NSPrincipalClass NSApplication + NSRemovableVolumesUsageDescription + MacPass need access to Removable Volumes to load and save your databases and/or key files there NSSupportsAutomaticGraphicsSwitching NSUserNotificationAlertStyle