From a947c6e6c97a31fe18ee168e5c02294706fba164 Mon Sep 17 00:00:00 2001 From: mltownsend Date: Mon, 8 Feb 2010 16:34:18 +0000 Subject: Fix bug where adding a user, setting name and password, then immediately hitting Apply didn't end editing in the password field. --- Interfaces/English.lproj/UserManagerView.xib | 12 +++++++- Source/SPUserManager.h | 1 + Source/SPUserManager.m | 46 +++++++++++++++++++--------- 3 files changed, 43 insertions(+), 16 deletions(-) diff --git a/Interfaces/English.lproj/UserManagerView.xib b/Interfaces/English.lproj/UserManagerView.xib index 3b53174d..890d5dc7 100644 --- a/Interfaces/English.lproj/UserManagerView.xib +++ b/Interfaces/English.lproj/UserManagerView.xib @@ -3966,6 +3966,14 @@ 892 + + + userNameTextField + + + + 893 + @@ -5521,7 +5529,7 @@ - 892 + 893 @@ -5658,6 +5666,7 @@ schemasTableView tabView treeController + userNameTextField YES @@ -5673,6 +5682,7 @@ NSTableView NSTabView NSTreeController + NSTextField diff --git a/Source/SPUserManager.h b/Source/SPUserManager.h index 76a790e5..172fbdde 100644 --- a/Source/SPUserManager.h +++ b/Source/SPUserManager.h @@ -52,6 +52,7 @@ IBOutlet NSButton *addSchemaPrivButton; IBOutlet NSButton *removeSchemaPrivButton; + IBOutlet NSTextField *userNameTextField; NSMutableArray *schemas; NSMutableArray *grantedSchemaPrivs; diff --git a/Source/SPUserManager.m b/Source/SPUserManager.m index c5b621ef..a65de9ee 100644 --- a/Source/SPUserManager.m +++ b/Source/SPUserManager.m @@ -555,6 +555,10 @@ - (IBAction)doApply:(id)sender { NSError *error = nil; + + //Change the first responder to end editing in any field + [[self window] makeFirstResponder:self]; + [[self managedObjectContext] save:&error]; if (error != nil) { @@ -625,6 +629,7 @@ [treeController addObject:newItem]; [outlineView expandItem:[outlineView itemAtRow:[outlineView selectedRow]]]; + [[self window] makeFirstResponder:userNameTextField]; } - (IBAction)removeUser:(id)sender @@ -907,22 +912,33 @@ { if ([[[user entity] name] isEqualToString:@"Privileges"]) continue; - NSString *createStatement; - - if ([user parent] && [[user parent] valueForKey:@"user"] && [[user parent] valueForKey:@"password"]) { - - createStatement = [NSString stringWithFormat:@"CREATE USER %@@%@ IDENTIFIED BY %@;", - [[[user parent] valueForKey:@"user"] tickQuotedString], - [[user valueForKey:@"host"] tickQuotedString], - [[[user parent] valueForKey:@"password"] tickQuotedString]]; - - // Create user in database - [self.mySqlConnection queryString:createStatement]; - - if ([self checkAndDisplayMySqlError]) { - [self grantPrivilegesToUser:user]; - } + NSString *createStatement = nil; + + if ([user parent] && [[user parent] valueForKey:@"user"] && [[user parent] valueForKey:@"password"]) + { + createStatement = [NSString stringWithFormat:@"CREATE USER %@@%@ IDENTIFIED BY %@", + [[[user parent] valueForKey:@"user"] tickQuotedString], + [[user valueForKey:@"host"] tickQuotedString], + [[[user parent] valueForKey:@"password"] tickQuotedString]]; } + else + { + if ([user parent] && [[user parent] valueForKey:@"user"]) + { + createStatement = [NSString stringWithFormat:@"CREATE USER %@@%@", + [[[user parent] valueForKey:@"user"] tickQuotedString], + [[user valueForKey:@"host"] tickQuotedString]]; + } + } + + if (createStatement) + { + // Create user in database + [self.mySqlConnection queryString:createStatement]; + + if ([self checkAndDisplayMySqlError]) + [self grantPrivilegesToUser:user]; + } } return YES; -- cgit v1.2.3