diff --git a/MacPass/Base.lproj/ContextBar.xib b/MacPass/Base.lproj/ContextBar.xib
index c73b78b3..8c2ee2b5 100644
--- a/MacPass/Base.lproj/ContextBar.xib
+++ b/MacPass/Base.lproj/ContextBar.xib
@@ -26,115 +26,132 @@
-
+
-
+
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
@@ -150,14 +167,14 @@
-
+
-
+
-
+
@@ -198,14 +215,14 @@
-
+
-
+
-
+
@@ -215,7 +232,7 @@
-
+
@@ -256,7 +273,7 @@
-
+
diff --git a/MacPass/MPContextBarViewController.h b/MacPass/MPContextBarViewController.h
index 1c8a842a..cddaee61 100644
--- a/MacPass/MPContextBarViewController.h
+++ b/MacPass/MPContextBarViewController.h
@@ -26,14 +26,13 @@
@class HNHUIGradientView;
@class MPDocument;
-@interface MPContextBarViewController : MPViewController
+@interface MPContextBarViewController : MPViewController
@property (weak) IBOutlet NSButton *titleButton;
@property (weak) IBOutlet NSButton *usernameButton;
@property (weak) IBOutlet NSButton *passwordButton;
@property (weak) IBOutlet NSButton *urlButton;
@property (weak) IBOutlet NSButton *notesButton;
-@property (weak) IBOutlet NSButton *duplicatePasswordsButton;
@property (weak) IBOutlet NSPopUpButton *specialFilterPopUpButton;
@property (weak) IBOutlet NSButton *everywhereButton;
diff --git a/MacPass/MPContextBarViewController.m b/MacPass/MPContextBarViewController.m
index 62373cb4..f939b4f9 100644
--- a/MacPass/MPContextBarViewController.m
+++ b/MacPass/MPContextBarViewController.m
@@ -134,21 +134,40 @@ typedef NS_ENUM(NSUInteger, MPContextTab) {
}
}
-/*
- - (BOOL)control:(NSControl*)control textView:(NSTextView*)textView doCommandBySelector:(SEL)commandSelector {
- if(commandSelector == @selector(insertNewline:)) {
- [self _didChangeFilter];
- }
- return NO;
- }
- */
+- (void)stackView:(NSStackView *)stackView willDetachViews:(NSArray *)views {
+ for(NSView *view in views) {
+ if([view isKindOfClass:NSButton.class]) {
+ NSButton *button = (NSButton *)view;
+ NSMenuItem *item = [self.specialFilterPopUpButton.menu itemWithTag:button.tag];
+ if(item) {
+ return; // no duplicates
+ }
+ item = [self _menuItemForButton:button];
+ if(item) {
+ [self.specialFilterPopUpButton.menu addItem:item];
+ }
+ }
+ }
+ [self _updateFilterButtons];
+}
+- (void)stackView:(NSStackView *)stackView didReattachViews:(NSArray *)views {
+ for(NSView *view in views) {
+ if([view isKindOfClass:NSButton.class]) {
+ NSButton *button = (NSButton *)view;
+ NSMenuItem *item = [self.specialFilterPopUpButton.menu itemWithTag:button.tag];
+ if(item) {
+ [self.specialFilterPopUpButton.menu removeItem:item];
+ }
+ }
+ }
+ [self _updateFilterButtons];
+}
#pragma mark UI Helper
- (void)_updateFilterButtons {
MPDocument *document = self.windowController.document;
MPEntrySearchFlags currentFlags = document.searchContext.searchFlags;
- self.duplicatePasswordsButton.state = HNHUIStateForBool(MPIsFlagSetInOptions(MPEntrySearchDoublePasswords, currentFlags));
self.notesButton.state = HNHUIStateForBool(MPIsFlagSetInOptions(MPEntrySearchNotes, currentFlags));
self.passwordButton.state = HNHUIStateForBool(MPIsFlagSetInOptions(MPEntrySearchPasswords, currentFlags));
self.titleButton.state = HNHUIStateForBool(MPIsFlagSetInOptions(MPEntrySearchTitles, currentFlags));
@@ -173,4 +192,10 @@ typedef NS_ENUM(NSUInteger, MPContextTab) {
[self.specialFilterPopUpButton selectItemWithTag:selectedTag];
}
+- (NSMenuItem *)_menuItemForButton:(NSButton *)button {
+ NSMenuItem *item = [[NSMenuItem alloc] initWithTitle:button.title action:@selector(toggleSearchFlags:) keyEquivalent:@""];
+ item.tag = button.tag;
+ return item;
+}
+
@end