settings: save parameters only when editing finished

Change-Id: Ieaeb2d40cff9cf34337aae634289004ba37d39f9
diff --git a/src/AccAdvancedRingVC.mm b/src/AccAdvancedRingVC.mm
index 9beedbc..b2efa4e 100644
--- a/src/AccAdvancedRingVC.mm
+++ b/src/AccAdvancedRingVC.mm
@@ -122,11 +122,9 @@
 
 #pragma mark - NSTextFieldDelegate methods
 
--(void)controlTextDidChange:(NSNotification *)notif
+-(void)controlTextDidEndEditing:(NSNotification *)notif
 {
     NSTextField *textField = [notif object];
-    NSRange test = [[textField currentEditor] selectedRange];
-
     [self valueDidChange:textField];
 }
 
diff --git a/src/AccAdvancedSipVC.mm b/src/AccAdvancedSipVC.mm
index 663bad3..abab97d 100644
--- a/src/AccAdvancedSipVC.mm
+++ b/src/AccAdvancedSipVC.mm
@@ -354,11 +354,9 @@
 
 #pragma mark - NSTextFieldDelegate methods
 
--(void)controlTextDidChange:(NSNotification *)notif
+-(void)controlTextDidEndEditing:(NSNotification *)notif
 {
     NSTextField *textField = [notif object];
-    NSRange test = [[textField currentEditor] selectedRange];
-
     [self valueDidChange:textField];
 }
 
diff --git a/src/AccRingGeneralVC.mm b/src/AccRingGeneralVC.mm
index 93a4eec..ef9db62 100644
--- a/src/AccRingGeneralVC.mm
+++ b/src/AccRingGeneralVC.mm
@@ -297,15 +297,15 @@
 
 #pragma mark - NSTextFieldDelegate delegate methods
 
-- (void)controlTextDidChange:(NSNotification *)notif
+-(void)controlTextDidEndEditing:(NSNotification *)notification
 {
-    NSTextField* textField = [notif object];
+    NSTextField* textField = [notification object];
     if (textField.tag != DISPLAYNAME) {
         return;
     }
+
     NSString* displayName = textField.stringValue;
 
-    [NSObject cancelPreviousPerformRequestsWithTarget:self];
     self.accountModel->setAlias(self.selectedAccountID, QString::fromNSString(displayName));
     lrc::api::account::ConfProperties_t accountProperties = self.accountModel->getAccountConfig(self.selectedAccountID);
     self.accountModel->setAccountConfig(self.selectedAccountID, accountProperties);
@@ -423,6 +423,7 @@
     [self.view.window beginSheet: passwordWC.window completionHandler:nil];
 }
 - (IBAction)triggerAdwancedSettings: (NSButton *)sender {
+    [self.view.window makeFirstResponder:nil];
     [self.delegate triggerAdvancedOptions];
 }
 
diff --git a/src/AccSipGeneralVC.mm b/src/AccSipGeneralVC.mm
index 7bdff36..b9a720c 100644
--- a/src/AccSipGeneralVC.mm
+++ b/src/AccSipGeneralVC.mm
@@ -118,6 +118,7 @@
 }
 
 - (IBAction)triggerAdwancedSettings: (NSButton *)sender {
+     [self.view.window makeFirstResponder:nil];
      [self.delegate triggerAdvancedOptions];
 }
 
@@ -261,15 +262,13 @@
 
 #pragma mark - NSTextFieldDelegate delegate methods
 
-- (void)controlTextDidChange:(NSNotification *)notif
+-(void)controlTextDidEndEditing:(NSNotification *)notification
 {
-    NSTextField* textField = [notif object];
+    NSTextField* textField = [notification object];
     if (textField.tag != DISPLAYNAME) {
         return;
     }
     NSString* displayName = textField.stringValue;
-
-    [NSObject cancelPreviousPerformRequestsWithTarget:self];
     self.accountModel->setAlias(self.selectedAccountID, QString::fromNSString(displayName));
     lrc::api::account::ConfProperties_t accountProperties = self.accountModel->getAccountConfig(self.selectedAccountID);
     self.accountModel->setAccountConfig(self.selectedAccountID, accountProperties);