From 498ab93f3a8d4e7ddcf200f1048171eec2d06f50 Mon Sep 17 00:00:00 2001 From: michael starke Date: Tue, 20 Dec 2016 11:31:06 +0100 Subject: [PATCH 01/10] added missing contrains to silence 10.12 AppKit warnings --- MacPass/Base.lproj/EntryInspectorView.xib | 21 ++++++++++----------- MacPass/MPEntryInspectorViewController.m | 5 +++++ 2 files changed, 15 insertions(+), 11 deletions(-) diff --git a/MacPass/Base.lproj/EntryInspectorView.xib b/MacPass/Base.lproj/EntryInspectorView.xib index e6645f26..85c5b099 100644 --- a/MacPass/Base.lproj/EntryInspectorView.xib +++ b/MacPass/Base.lproj/EntryInspectorView.xib @@ -1,8 +1,9 @@ - - + + - + + @@ -95,10 +96,10 @@ - + - + @@ -215,7 +216,6 @@ - @@ -275,10 +275,10 @@ - + - + @@ -399,7 +399,6 @@ - @@ -743,7 +742,7 @@ - + @@ -768,6 +767,7 @@ + @@ -784,7 +784,6 @@ - diff --git a/MacPass/MPEntryInspectorViewController.m b/MacPass/MPEntryInspectorViewController.m index 960101cf..a550ef07 100644 --- a/MacPass/MPEntryInspectorViewController.m +++ b/MacPass/MPEntryInspectorViewController.m @@ -350,6 +350,11 @@ typedef NS_ENUM(NSUInteger, MPEntryTab) { options:0 metrics:nil views:views]]; + [clipView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[view]" + options:0 + metrics:nil + views:views]]; + [[self view] layoutSubtreeIfNeeded]; } From d5f6317cca540a9995223e2014bf90eee49c26ee Mon Sep 17 00:00:00 2001 From: michael starke Date: Tue, 20 Dec 2016 11:31:30 +0100 Subject: [PATCH 02/10] keyfile storage now gets updated if the keyfile is removed --- MacPass/MPDocument.m | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/MacPass/MPDocument.m b/MacPass/MPDocument.m index c95f40e9..af0786f4 100644 --- a/MacPass/MPDocument.m +++ b/MacPass/MPDocument.m @@ -361,11 +361,7 @@ NSString *const MPDocumentGroupKey = @"MPDocumentGrou self.encryptedData = nil; self.unlockCount += 1; [[NSNotificationCenter defaultCenter] postNotificationName:MPDocumentDidUnlockDatabaseNotification object:self]; - /* Make sure to only store */ - MPAppDelegate *delegate = (MPAppDelegate *)[NSApp delegate]; - if(self.compositeKey.hasKeyFile && self.compositeKey.hasPassword && delegate.isAllowedToStoreKeyFile) { - [self _storeKeyURL:keyFileURL]; - } + [self _storeKeyURL:keyFileURL]; } else { self.compositeKey = nil; // clear the key? @@ -768,17 +764,21 @@ NSString *const MPDocumentGroupKey = @"MPDocumentGrou } - (void)_storeKeyURL:(NSURL *)keyURL { - if(nil == keyURL) { - return; // no URL to store in the first place - } - MPAppDelegate *delegate = (MPAppDelegate *)[NSApp delegate]; - NSAssert(delegate.isAllowedToStoreKeyFile, @"We can only store if we are allowed to do so!"); NSMutableDictionary *keysForFiles = [[[NSUserDefaults standardUserDefaults] dictionaryForKey:kMPSettingsKeyRememeberdKeysForDatabases] mutableCopy]; - if(nil == keysForFiles) { - keysForFiles = [[NSMutableDictionary alloc] initWithCapacity:1]; + MPAppDelegate *delegate = (MPAppDelegate *)[NSApp delegate]; + if(!delegate.isAllowedToStoreKeyFile || nil == keyURL) { + /* user has removed the keyfile or we should not safe it so remove it */ + [keysForFiles removeObjectForKey:self.fileURL.path.sha1HexDigest]; + } + else if(self.compositeKey.hasPassword && self.compositeKey.hasKeyFile) { + if(nil == keysForFiles) { + keysForFiles = [[NSMutableDictionary alloc] initWithCapacity:1]; + } + keysForFiles[self.fileURL.path.sha1HexDigest] = keyURL.path; + } + if(keysForFiles) { + [[NSUserDefaults standardUserDefaults] setObject:keysForFiles forKey:kMPSettingsKeyRememeberdKeysForDatabases]; } - keysForFiles[self.fileURL.path.sha1HexDigest] = keyURL.path; - [[NSUserDefaults standardUserDefaults] setObject:keysForFiles forKey:kMPSettingsKeyRememeberdKeysForDatabases]; } - (void)_cleanupLock { From 09147801eadebf798cc88f4c4167e88197de104f Mon Sep 17 00:00:00 2001 From: michael starke Date: Tue, 20 Dec 2016 12:06:11 +0100 Subject: [PATCH 03/10] fixed layout warning in 10.12 --- MacPass/MPSettingsWindowController.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/MacPass/MPSettingsWindowController.m b/MacPass/MPSettingsWindowController.m index 41977fd2..8969d76f 100644 --- a/MacPass/MPSettingsWindowController.m +++ b/MacPass/MPSettingsWindowController.m @@ -80,7 +80,6 @@ [contentView.subviews.firstObject removeFromSuperview]; } [contentView addSubview:tabView]; - [contentView layout]; [contentView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-0-[tabView]-0-|" options:0 metrics:nil @@ -90,6 +89,7 @@ metrics:nil views:NSDictionaryOfVariableBindings(tabView)]]; + [contentView layout]; [contentView layoutSubtreeIfNeeded]; if([tab respondsToSelector:@selector(didShowTab)]) { [tab didShowTab]; From f9bad70bb7c33859c6e1320b3bee4b9f802ed120 Mon Sep 17 00:00:00 2001 From: michael starke Date: Tue, 20 Dec 2016 12:06:49 +0100 Subject: [PATCH 04/10] using last object for compatibilty --- MacPass/MPEntryViewController.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/MacPass/MPEntryViewController.m b/MacPass/MPEntryViewController.m index b989c0a6..e8f244db 100644 --- a/MacPass/MPEntryViewController.m +++ b/MacPass/MPEntryViewController.m @@ -410,7 +410,7 @@ NSString *const _MPTableSecurCellView = @"PasswordCell"; return; // we are showing the correct object right now. } } - self.representedObject = document.selectedGroups.count == 1 ? document.selectedGroups.firstObject : nil; + self.representedObject = document.selectedGroups.count == 1 ? document.selectedGroups.lastObject : nil; } [self _updateContextBar]; } From ebac7fc0aa4999a3bea80e2facf17ca0101c6218 Mon Sep 17 00:00:00 2001 From: michael starke Date: Tue, 20 Dec 2016 12:06:56 +0100 Subject: [PATCH 05/10] removed commented code --- MacPass/MPEntryInspectorViewController.m | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/MacPass/MPEntryInspectorViewController.m b/MacPass/MPEntryInspectorViewController.m index a550ef07..7d0a505e 100644 --- a/MacPass/MPEntryInspectorViewController.m +++ b/MacPass/MPEntryInspectorViewController.m @@ -404,10 +404,7 @@ typedef NS_ENUM(NSUInteger, MPEntryTab) { withKeyPath:[NSString stringWithFormat:@"%@.%@.%@", NSStringFromSelector(@selector(representedObject)), NSStringFromSelector(@selector(uuid)), NSStringFromSelector(@selector(UUIDString))] options:@{ NSConditionallySetsEditableBindingOption: @NO }]; self.uuidTextField.editable = NO; - - /*for(id item in items) { - [item bind:NSEnabledBinding toObject:self.entryController withKeyPath:NSStringFromSelector(@selector(isEditable)) options:nil]; - }*/ + } - (void)_bindAttachments { From 29abf7540ffabf667160bea934175af37592688c Mon Sep 17 00:00:00 2001 From: michael starke Date: Tue, 20 Dec 2016 12:07:32 +0100 Subject: [PATCH 06/10] =?UTF-8?q?fixed=20regression=20resulting=20in=20bro?= =?UTF-8?q?ken=20drag=E2=80=99n=E2=80=99drop=20of=20files=20to=20entries?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- MacPass/MPAttachmentTableDataSource.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/MacPass/MPAttachmentTableDataSource.m b/MacPass/MPAttachmentTableDataSource.m index ede6825c..56df38c0 100644 --- a/MacPass/MPAttachmentTableDataSource.m +++ b/MacPass/MPAttachmentTableDataSource.m @@ -52,7 +52,7 @@ KPKEntry *entry = document.selectedEntries.count == 1 ? document.selectedEntries.lastObject : nil; NSPasteboard *draggingPasteBoard = [info draggingPasteboard]; - NSArray *arrayOfURLs = [draggingPasteBoard readObjectsForClasses:@[[NSArray class]] options:nil]; + NSArray *arrayOfURLs = [draggingPasteBoard readObjectsForClasses:@[[NSURL class]] options:nil]; for(NSURL *fileUrl in arrayOfURLs) { [document addAttachment:fileUrl toEntry:entry]; From b0ae3ab4fdb86772f1a0568faf5c94f1ccc5f314 Mon Sep 17 00:00:00 2001 From: michael starke Date: Mon, 2 Jan 2017 13:07:19 +0100 Subject: [PATCH 07/10] Using properties where possible --- MacPass/MPToolbarDelegate.m | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/MacPass/MPToolbarDelegate.m b/MacPass/MPToolbarDelegate.m index 71a3890d..25d6a99d 100644 --- a/MacPass/MPToolbarDelegate.m +++ b/MacPass/MPToolbarDelegate.m @@ -292,9 +292,9 @@ NSString *const MPToolbarItemCopyPassword = @"TOOLBAR_COPY_PASSWORD"; _didShowToolbarForSearch = YES; self.toolbar.visible = YES; } - _displayModeBeforeSearch = [self.toolbar displayMode]; + _displayModeBeforeSearch = self.toolbar.displayMode; if(_displayModeBeforeSearch == NSToolbarDisplayModeLabelOnly) { - [self.toolbar setDisplayMode:NSToolbarDisplayModeIconAndLabel]; + self.toolbar.displayMode = NSToolbarDisplayModeIconAndLabel; } /* only make the searchfield first responder if it's not already in an active search */ if(![self.searchField currentEditor]) { From 0d5dcc4aadd00a0b91e6b6fe08ab6fa6d27f254e Mon Sep 17 00:00:00 2001 From: michael starke Date: Mon, 2 Jan 2017 13:08:18 +0100 Subject: [PATCH 08/10] Updating xib to current Xcode --- MacPass/ContextBar.xib | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/MacPass/ContextBar.xib b/MacPass/ContextBar.xib index d5efa587..82fa7e84 100644 --- a/MacPass/ContextBar.xib +++ b/MacPass/ContextBar.xib @@ -1,8 +1,9 @@ - - + + - + + From d9122859195999b1270c3b050d87a3325922d709 Mon Sep 17 00:00:00 2001 From: michael starke Date: Tue, 3 Jan 2017 14:50:08 +0100 Subject: [PATCH 09/10] Reworked use of DDHotKey to prevent unwanted deregistration. --- MacPass/DDHotKey+MacPassAdditions.h | 12 +++-- MacPass/DDHotKey+MacPassAdditions.m | 43 ++++++++-------- MacPass/MPAutotypeDaemon.m | 58 ++++++++++------------ MacPass/MPIntegrationSettingsController.m | 2 +- MacPass/MPSettingsHelper.m | 2 +- MacPass/de.lproj/Localizable.strings | Bin 14854 -> 15046 bytes MacPass/en.lproj/Localizable.strings | Bin 13846 -> 14006 bytes MacPass/fr.lproj/Localizable.strings | Bin 15186 -> 15320 bytes MacPass/it.lproj/Localizable.strings | Bin 14486 -> 14620 bytes MacPass/nl.lproj/Localizable.strings | Bin 14408 -> 14542 bytes MacPass/ru.lproj/Localizable.strings | Bin 14610 -> 14744 bytes MacPass/zh-Hans.lproj/Localizable.strings | Bin 11888 -> 12022 bytes 12 files changed, 61 insertions(+), 56 deletions(-) diff --git a/MacPass/DDHotKey+MacPassAdditions.h b/MacPass/DDHotKey+MacPassAdditions.h index 5ae2442c..3ebcf040 100644 --- a/MacPass/DDHotKey+MacPassAdditions.h +++ b/MacPass/DDHotKey+MacPassAdditions.h @@ -12,11 +12,17 @@ @property (readonly, copy) NSData *keyData; + +/** + Use this method to retrieve the data, since deallocation of a hotkey unregisters it, this could yield unwanted behaviour! + @return data for the default hot key. +*/ ++ (NSData *)hotKeyDataWithKeyCode:(unsigned short)keyCode modifierFlags:(NSUInteger)flags; ++ (NSData *)defaultHotKeyData; + (instancetype)defaultHotKey; + (instancetype)defaultHotKeyWithTask:(DDHotKeyTask)task; - -- (instancetype)initWithKeyData:(NSData *)data task:(DDHotKeyTask)task; -- (instancetype)initWithKeyData:(NSData *)data; ++ (instancetype)hotKeyWithKeyData:(NSData *)data task:(DDHotKeyTask)task; ++ (instancetype)hotKeyWithKeyData:(NSData *)data; @end diff --git a/MacPass/DDHotKey+MacPassAdditions.m b/MacPass/DDHotKey+MacPassAdditions.m index db1fc74d..40ed2281 100644 --- a/MacPass/DDHotKey+MacPassAdditions.m +++ b/MacPass/DDHotKey+MacPassAdditions.m @@ -14,45 +14,48 @@ @implementation DDHotKey (MPKeydata) ++ (NSData *)hotKeyDataWithKeyCode:(unsigned short)keyCode modifierFlags:(NSUInteger)flags { + NSMutableData *data = [[NSMutableData alloc] init]; + NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:data]; + [archiver encodeInt:keyCode forKey:NSStringFromSelector(@selector(keyCode))]; + [archiver encodeInteger:flags forKey:NSStringFromSelector(@selector(modifierFlags))]; + [archiver finishEncoding]; + return [data copy]; +} + ++ (NSData *)defaultHotKeyData { + return [self hotKeyDataWithKeyCode:kVK_ANSI_M modifierFlags:kCGEventFlagMaskControl|kCGEventFlagMaskAlternate]; +} + + (instancetype)defaultHotKey { return [DDHotKey defaultHotKeyWithTask:nil]; } + (instancetype)defaultHotKeyWithTask:(DDHotKeyTask)task { - return [[DDHotKey alloc] initWithKeyData:nil task:task]; + return [DDHotKey hotKeyWithKeyData:nil task:task]; } -- (instancetype)initWithKeyData:(NSData *)data { - self = [self initWithKeyData:data task:nil]; - return self; ++ (instancetype)hotKeyWithKeyData:(NSData *)data { + return [self hotKeyWithKeyData:data task:nil]; } -- (instancetype)initWithKeyData:(NSData *)data task:(DDHotKeyTask)task{ ++ (instancetype)hotKeyWithKeyData:(NSData *)data task:(DDHotKeyTask)task { NSUInteger modifierFlags; unsigned short keyCode; if(!data) { - self = [DDHotKey hotKeyWithKeyCode:kVK_ANSI_M modifierFlags:kCGEventFlagMaskControl|kCGEventFlagMaskAlternate task:task]; + return [DDHotKey hotKeyWithKeyCode:kVK_ANSI_M modifierFlags:kCGEventFlagMaskControl|kCGEventFlagMaskAlternate task:task]; } - else if([self _getKeyCode:&keyCode modifierFlags:&modifierFlags fromData:data]) { - self = [DDHotKey hotKeyWithKeyCode:keyCode modifierFlags:modifierFlags task:task]; + if([self _getKeyCode:&keyCode modifierFlags:&modifierFlags fromData:data]) { + return [DDHotKey hotKeyWithKeyCode:keyCode modifierFlags:modifierFlags task:task]; } - else { - self = nil; - } - return self; + return nil; } - (NSData *)keyData { - NSMutableData *data = [[NSMutableData alloc] init]; - NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:data]; - [archiver encodeInt:self.keyCode forKey:NSStringFromSelector(@selector(keyCode))]; - [archiver encodeInteger:self.modifierFlags forKey:NSStringFromSelector(@selector(modifierFlags))]; - [archiver finishEncoding]; - return [data copy]; + return [self.class hotKeyDataWithKeyCode:self.keyCode modifierFlags:self.modifierFlags]; } - -- (BOOL)_getKeyCode:(unsigned short *)keyCode modifierFlags:(NSUInteger *)modifierFlags fromData:(NSData *)data { ++ (BOOL)_getKeyCode:(unsigned short *)keyCode modifierFlags:(NSUInteger *)modifierFlags fromData:(NSData *)data { if(keyCode == NULL || modifierFlags == NULL || data == nil) { return NO; } diff --git a/MacPass/MPAutotypeDaemon.m b/MacPass/MPAutotypeDaemon.m index 715bf69e..db48fc4c 100644 --- a/MacPass/MPAutotypeDaemon.m +++ b/MacPass/MPAutotypeDaemon.m @@ -147,16 +147,32 @@ static MPAutotypeDaemon *_sharedInstance; return; // We do not perform Autotype on ourselves } - NSArray *documents = [self _findAutotypeDocuments]; + /* find autotype documents */ + NSArray *documents = [NSApp orderedDocuments]; + /* No open document, inform the user and return without any action */ if(documents.count == 0) { - /* We do not have a document. This can be - a) there is none - nothing happens - b) there is at least one, but locked - we get called again after the document has been unlocked - */ + NSUserNotification *notification = [[NSUserNotification alloc] init]; + notification.title = NSApp.applicationName; + notification.informativeText = NSLocalizedString(@"AUTOTYPE_OVERLAY_NO_DOCUMENTS", ""); + [[NSUserNotificationCenter defaultUserNotificationCenter] deliverNotification:notification]; return; } + NSPredicate *filterPredicate = [NSPredicate predicateWithBlock:^BOOL(id _Nonnull evaluatedObject, NSDictionary * _Nullable bindings) { + MPDocument *document = evaluatedObject; + return !document.encrypted;}]; + NSArray *unlockedDocuments = [documents filteredArrayUsingPredicate:filterPredicate]; + /* We look for all unlocked documents, if all open documents are locked, we pop the front most and try to search again */ + if(unlockedDocuments.count == 0) { + [NSApp activateIgnoringOtherApps:YES]; + [NSApp.mainWindow makeKeyAndOrderFront:self]; + /* show the actual document window to the user */ + [documents.firstObject showWindows]; + [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(_didUnlockDatabase:) name:MPDocumentDidUnlockDatabaseNotification object:nil]; + return; // wait for the unlock to happen + } + MPAutotypeContext *context = [self _autotypeContextForDocuments:documents forWindowTitle:self.targetWindowTitle preferredEntry:entryOrNil]; - /* TODO: that's popping up if the mulit seleciton dialog goes up! */ + /* TODO: that's popping up if the mulit selection dialog goes up! */ if(!entryOrNil) { NSUserNotification *notification = [[NSUserNotification alloc] init]; notification.title = NSApp.applicationName; @@ -171,22 +187,6 @@ static MPAutotypeDaemon *_sharedInstance; [self _performAutotypeForContext:context]; } -- (NSArray *)_findAutotypeDocuments { - - NSArray *documents = [NSApp orderedDocuments]; - NSPredicate *filterPredicate = [NSPredicate predicateWithBlock:^BOOL(id _Nonnull evaluatedObject, NSDictionary * _Nullable bindings) { - MPDocument *document = evaluatedObject; - return !document.encrypted;}]; - NSArray *unlockedDocuments = [documents filteredArrayUsingPredicate:filterPredicate]; - /* We look for all unlocked documents, if all open documents are locked, we pop the front most and try to search again */ - if(unlockedDocuments.count == 0 && documents.count > 0) { - [NSApp activateIgnoringOtherApps:YES]; - [NSApp.mainWindow makeKeyAndOrderFront:self]; - [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(_didUnlockDatabase:) name:MPDocumentDidUnlockDatabaseNotification object:nil]; - } - return unlockedDocuments; -} - - (MPAutotypeContext *)_autotypeContextForDocuments:(NSArray *)documents forWindowTitle:(NSString *)windowTitle preferredEntry:(KPKEntry *)entry { /* Query the document to generate a autotype command list for the window title @@ -230,22 +230,18 @@ static MPAutotypeDaemon *_sharedInstance; #pragma mark - #pragma mark Hotkey Registration - (void)_registerHotKey { + if(!self.hotKeyData) { + return; + } __weak MPAutotypeDaemon *welf = self; DDHotKeyTask aTask = ^(NSEvent *event) { [welf _didPressHotKey]; }; - DDHotKey *storedHotkey; - if(nil == self.hotKeyData) { - storedHotkey = [DDHotKey defaultHotKeyWithTask:aTask]; - } - else { - storedHotkey = [[DDHotKey alloc] initWithKeyData:self.hotKeyData task:aTask]; - } - self.registredHotKey = [[DDHotKeyCenter sharedHotKeyCenter] registerHotKey:storedHotkey]; + self.registredHotKey = [[DDHotKeyCenter sharedHotKeyCenter] registerHotKey:[DDHotKey hotKeyWithKeyData:self.hotKeyData task:aTask]]; } - (void)_unregisterHotKey { - if(nil != self.registredHotKey) { + if(self.registredHotKey) { [[DDHotKeyCenter sharedHotKeyCenter] unregisterHotKey:self.registredHotKey]; self.registredHotKey = nil; } diff --git a/MacPass/MPIntegrationSettingsController.m b/MacPass/MPIntegrationSettingsController.m index 895d0042..9c417465 100644 --- a/MacPass/MPIntegrationSettingsController.m +++ b/MacPass/MPIntegrationSettingsController.m @@ -58,7 +58,7 @@ } - (void)willShowTab { - _hotKey = [[DDHotKey alloc] initWithKeyData:[[NSUserDefaults standardUserDefaults] dataForKey:kMPSettingsKeyGlobalAutotypeKeyDataKey]]; + _hotKey = [DDHotKey hotKeyWithKeyData:[[NSUserDefaults standardUserDefaults] dataForKey:kMPSettingsKeyGlobalAutotypeKeyDataKey]]; /* Change any invalid hotkeys to valid ones? */ self.hotKeyTextField.hotKey = self.hotKey; } diff --git a/MacPass/MPSettingsHelper.m b/MacPass/MPSettingsHelper.m index b04243ce..a0bb06d5 100644 --- a/MacPass/MPSettingsHelper.m +++ b/MacPass/MPSettingsHelper.m @@ -110,7 +110,7 @@ NSString *const kMPDeprecatedSettingsKeyDefaultPasswordRounds = @"Ke kMPSettingsKeyRememberKeyFilesForDatabases: @NO, kMPSettingsKeySendCommandForControlKey: @YES, kMPSettingsKeyEnableGlobalAutotype: @NO, - kMPSettingsKeyGlobalAutotypeKeyDataKey: [[DDHotKey defaultHotKey] keyData], + kMPSettingsKeyGlobalAutotypeKeyDataKey: [DDHotKey defaultHotKeyData], kMPSettingsKeyDefaultGlobalAutotypeSequence: @"{USERNAME}{TAB}{PASSWORD}{ENTER}", kMPSettingsKeyAutotypeMatchTitle: @YES, kMPSettingsKeyAutotypeMatchURL: @NO, diff --git a/MacPass/de.lproj/Localizable.strings b/MacPass/de.lproj/Localizable.strings index 1429fa87d70c33946eee7da248eb861caf9e0f2b..ec6fb88f3739aef167ae4a5ab47fb6326128763b 100644 GIT binary patch delta 132 zcmZoGIaazMNKMd%!JomIA(X+F!Ii;}A%r1#@_HTd#BU5~K$ypn3d9Nw!3>!|mI4rG zg2faVTo@7=O2B*_pm-@mE|7F*$YIE5NCL{_0C|o;(GnoPgrSn50Ia(TD53z=4-&81 JEUorh7yzA%93KDx delta 12 TcmX?B+E%h5NNux_`W9gTCIkf$ diff --git a/MacPass/en.lproj/Localizable.strings b/MacPass/en.lproj/Localizable.strings index 7c31619999b6cdb052c43b426d6f6c17130fd355..d8d1f6415045de846df46b8be5f78f9481e20e9a 100644 GIT binary patch delta 96 zcmbQ1vn_W6hYGt3gFk~aL+Ip-RbodPO844Iu8S)qu7!rXvjUkgE2gp}oC}GG4 rlBEpAV4gcrG@l^}s3vFfLQ`Q@MFu4X>&YL*#V4nz2yA9j5fK6aLe>?M delta 12 Tcmdm%J1u7ehsx#^Dttl!Bs2t} diff --git a/MacPass/fr.lproj/Localizable.strings b/MacPass/fr.lproj/Localizable.strings index abb3da39dc3ce46d5aad0cddec88d16333c7c3f4..8693e62d6abcf540d7c4c5ae1b6e5544e14a78ac 100644 GIT binary patch delta 74 zcmcaqcB6bloVuh7gFk~aLnwnUgDZm{LkL4KgA#)RgDr!?WO-@P$!F9B#QlIO;u$d1 OP2Q-ky*WbtmoNa2&=E-h delta 12 TcmcaneyMCjociV`>R*HbE*=Jw diff --git a/MacPass/it.lproj/Localizable.strings b/MacPass/it.lproj/Localizable.strings index 500a3d72767c765a2154086f9b044948b876309d..3b37c573f7a0abf80e15098bc9d308ee7dd2caf1 100644 GIT binary patch delta 64 zcmbPMIHzdCK2>%X27d-;hS14{{Nj^YBn2kxsR@Yt0mb4OpfU`;46Y1*3?U4`lP5|_ MgXA~wP`xJv03at2Pyhe` delta 12 TcmbPJG_7#MKGn@GYBz)cC~5_; diff --git a/MacPass/nl.lproj/Localizable.strings b/MacPass/nl.lproj/Localizable.strings index cee037247ce28464efc70b63ffef798409412f91..9965b1611ece308513609ba5fd289ef4c443346b 100644 GIT binary patch delta 70 zcmX?6aISE}2USTI27d-;hEN7y23H0@h7g8e1|wUR;(kEccm@nLlMU6h KH@{Mi69NEM2@l8s delta 12 TcmX?Cc%op#2i47GY7s&JEyxA- diff --git a/MacPass/ru.lproj/Localizable.strings b/MacPass/ru.lproj/Localizable.strings index 5d672103b47a775ef1227e78de7932915a743874..64c9406e43427b2fca73c984fb17c5b0fd182223 100644 GIT binary patch delta 74 zcmbPKG^2P!hMJ@cgFk~aLnwnUgDZm{LkL4KgA#)RgDr!?WPK^o$*0r=#QlIO;u$d1 OO{mT diff --git a/MacPass/zh-Hans.lproj/Localizable.strings b/MacPass/zh-Hans.lproj/Localizable.strings index d82179ae528fca5625f5de13aac1590a0a0471fe..ef2175c08db3ebfb69ed9b535f29d97f2c6e5358 100644 GIT binary patch delta 74 zcmewm^DTD6JUK}h27d-;hEN7y23H0@h7g8e1| Date: Mon, 9 Jan 2017 23:44:49 +0100 Subject: [PATCH 10/10] User field now uses fixed size font --- MacPass/Base.lproj/EntryInspectorView.xib | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/MacPass/Base.lproj/EntryInspectorView.xib b/MacPass/Base.lproj/EntryInspectorView.xib index 85c5b099..ec71694e 100644 --- a/MacPass/Base.lproj/EntryInspectorView.xib +++ b/MacPass/Base.lproj/EntryInspectorView.xib @@ -488,7 +488,7 @@ - +