From 12406bf10ff6508e7a0c04377dd284f84cfd12fc Mon Sep 17 00:00:00 2001 From: Michael Starke Date: Mon, 8 Nov 2021 16:34:44 +0100 Subject: [PATCH] Added option to show search after unlocking the database --- Cartfile.resolved | 2 +- MacPass/MPDocumentWindowController.m | 11 +++++++---- MacPass/MPSettingsHelper.h | 1 + MacPass/MPSettingsHelper.m | 5 ++++- MacPass/MPToolbarDelegate.m | 5 +++++ MacPass/MPToolbarItem.m | 4 ++-- 6 files changed, 20 insertions(+), 8 deletions(-) diff --git a/Cartfile.resolved b/Cartfile.resolved index 2fcf8501..7bc10660 100644 --- a/Cartfile.resolved +++ b/Cartfile.resolved @@ -2,4 +2,4 @@ github "MacPass/KeePassKit" "35da75901b293a53b44b1d0fe9d8fb312a4a7602" github "MacPass/KissXML" "933f04fe5ad95c2be07ec0c2f801e140007f20fa" github "MacPass/TransformerKit" "a8b5bb73cc327ec6798569b865c32fec5eb2289f" github "mstarke/HNHUi" "6.0" -github "sparkle-project/Sparkle" "1.24.0" +github "sparkle-project/Sparkle" "1.27.0" diff --git a/MacPass/MPDocumentWindowController.m b/MacPass/MPDocumentWindowController.m index 41622269..625f521e 100644 --- a/MacPass/MPDocumentWindowController.m +++ b/MacPass/MPDocumentWindowController.m @@ -164,8 +164,8 @@ typedef void (^MPPasswordChangedBlock)(BOOL didChangePassword); /* enqueue async into main to catch some cases, where the UI would not set the responder correctly */ MPDocumentWindowController * __weak welf = self; dispatch_async(dispatch_get_main_queue(), ^{ - NSResponder *responder = ((MPViewController *)contentViewController).reconmendedFirstResponder; - [welf.window makeFirstResponder:responder]; + NSResponder *responder = ((MPViewController *)contentViewController).reconmendedFirstResponder; + [welf.window makeFirstResponder:responder]; }); } } @@ -189,6 +189,10 @@ typedef void (^MPPasswordChangedBlock)(BOOL didChangePassword); - (void)_didUnlockDatabase:(NSNotification *)notification { [self showEntries]; + BOOL focusSearchAfterUnlock = [NSUserDefaults.standardUserDefaults boolForKey:kMPSettingsKeyFocusSearchAfterUnlock]; + if(focusSearchAfterUnlock) { + [self.document performCustomSearch:self]; + } /* Show password reminders */ [self _presentPasswordIntervalAlerts]; } @@ -439,7 +443,7 @@ typedef void (^MPPasswordChangedBlock)(BOOL didChangePassword); - (void)pickExpiryDate:(id)sender { // FIXME: use propert responder chain - [self.splitViewController.inspectorViewController pickExpiryDate:sender]; + [self.splitViewController.inspectorViewController pickExpiryDate:sender]; } - (void)showPluginData:(id)sender { @@ -483,7 +487,6 @@ typedef void (^MPPasswordChangedBlock)(BOOL didChangePassword); - (void)showEntries { self.contentViewController = self.splitViewController; [self.splitViewController showOutline]; - } - (void)showGroupInOutline:(id)sender { diff --git a/MacPass/MPSettingsHelper.h b/MacPass/MPSettingsHelper.h index 8db6f3ba..7e18ccb5 100644 --- a/MacPass/MPSettingsHelper.h +++ b/MacPass/MPSettingsHelper.h @@ -34,6 +34,7 @@ APPKIT_EXTERN NSString *const kMPSettingsKeyReopenLastDatabaseOnLaunch; APPKIT_EXTERN NSString *const kMPSettingsKeyQuitOnLastWindowClose; // Quit MacPass when the user closes the last window APPKIT_EXTERN NSString *const kMPSettingsKeyFileChangeStrategy; APPKIT_EXTERN NSString *const kMPSettingsKeyEnableAutosave; // if set to YES MacPass support Autosaving for documents +APPKIT_EXTERN NSString *const kMPSettingsKeyFocusSearchAfterUnlock; // Enter search after unlocking the database /* URL handling */ APPKIT_EXTERN NSString *const kMPSettingsKeyBrowserBundleId; diff --git a/MacPass/MPSettingsHelper.m b/MacPass/MPSettingsHelper.m index e8defe13..b9074091 100644 --- a/MacPass/MPSettingsHelper.m +++ b/MacPass/MPSettingsHelper.m @@ -35,6 +35,8 @@ NSString *const kMPSettingsKeyReopenLastDatabaseOnLaunch = @"Re NSString *const kMPSettingsKeyQuitOnLastWindowClose = @"QuitOnLastWindowClose"; NSString *const kMPSettingsKeyFileChangeStrategy = @"FileChangeStrategy"; NSString *const kMPSettingsKeyEnableAutosave = @"EnableAutosave"; +NSString *const kMPSettingsKeyFocusSearchAfterUnlock = @"FocusSearchAfterUnlock"; + NSString *const kMPSettingsKeyLockOnSleep = @"LockOnSleep"; NSString *const kMPSettingskeyLockOnLogout = @"LockOnLogout"; NSString *const kMPSettingskeyLockOnScreenSleep = @"LockOnScreenSleep"; @@ -173,7 +175,8 @@ NSString *const kMPDepricatedSettingsKeyAutotypeHideAccessibiltyWarning = @"Au kMPSettingsKeyHideAfterCopyToClipboard: @NO, kMPSettingsKeyFaviconDownloadMethod: @(MPFaviconDownloadMethodDirect), // Download directly from host kMPSettingsKeyGloablAutotypeAlwaysShowCandidateSelection: @NO, - kMPSettingsKeyUseUnifiedToolbar: @YES // Do not use unified toolbar under Big Sur and above + kMPSettingsKeyUseUnifiedToolbar: @YES, // Do not use unified toolbar under Big Sur and above + kMPSettingsKeyFocusSearchAfterUnlock: @NO // Do not enter search directly after unlocking the database }; }); return standardDefaults; diff --git a/MacPass/MPToolbarDelegate.m b/MacPass/MPToolbarDelegate.m index cc5cd04d..77857741 100644 --- a/MacPass/MPToolbarDelegate.m +++ b/MacPass/MPToolbarDelegate.m @@ -345,6 +345,11 @@ NSString *const MPToolbarItemIdentifierAutotype = @"TOOLBAR_AUTOTYPE"; } /* only make the searchfield first responder if it's not already in an active search */ if(![self.searchField currentEditor]) { + + // force search to be enabled since we might end up being called when it's not (yet) enabled + if(!searchItem.enabled) { + searchItem.enabled = YES; + } [self.searchField.window makeFirstResponder:self.searchField]; [self.searchField selectText:self]; } diff --git a/MacPass/MPToolbarItem.m b/MacPass/MPToolbarItem.m index c1baf60a..b9fcc4f8 100644 --- a/MacPass/MPToolbarItem.m +++ b/MacPass/MPToolbarItem.m @@ -21,19 +21,19 @@ // #import "MPToolbarItem.h" -#import "MPActionHelper.h" @implementation MPToolbarItem - (void)validate { if(![self.view menu]) { - id target = [NSApp targetForAction:[self action] to:nil from:self]; + id target = [NSApp targetForAction:self.action to:nil from:self]; BOOL isValid = (nil != target); id validateTarget = [NSApp targetForAction:@selector(validateToolbarItem:) to:nil from:self]; if(validateTarget) { isValid &= [validateTarget validateToolbarItem:self]; } self.enabled = isValid; + NSLog(@"Validating ToolbarItem:%@ valid:%@", self, isValid ? @"YES" : @"NO"); } } @end