diff options
author | rowanbeentje <rowan@beent.je> | 2009-11-18 01:03:21 +0000 |
---|---|---|
committer | rowanbeentje <rowan@beent.je> | 2009-11-18 01:03:21 +0000 |
commit | 251bc8a52e56fbf240b74d7bfcaf21090bbfe83f (patch) | |
tree | e992739c33d2d89f34eb4a30632984c859739810 | |
parent | 1c7cf0aa49e68714dbfc4d7ca01fccd519e22aee (diff) | |
download | sequelpro-251bc8a52e56fbf240b74d7bfcaf21090bbfe83f.tar.gz sequelpro-251bc8a52e56fbf240b74d7bfcaf21090bbfe83f.tar.bz2 sequelpro-251bc8a52e56fbf240b74d7bfcaf21090bbfe83f.zip |
- Make some thread safety improvements to improve on Issue #460
- Add some NSTextView editing notifications to maintain state correctly in an attempt to fix issue in crash log on comment 9 on #460
-rw-r--r-- | Source/SPExtendedTableInfo.m | 24 | ||||
-rw-r--r-- | Source/TableContent.m | 4 |
2 files changed, 22 insertions, 6 deletions
diff --git a/Source/SPExtendedTableInfo.m b/Source/SPExtendedTableInfo.m index 9a84286e..b2d92a58 100644 --- a/Source/SPExtendedTableInfo.m +++ b/Source/SPExtendedTableInfo.m @@ -204,12 +204,19 @@ [tableTypePopUpButton addItemWithTitle:@"View"]; // Set create syntax [tableCreateSyntaxTextView setEditable:YES]; + [tableCreateSyntaxTextView shouldChangeTextInRange:NSMakeRange(0, [[tableCreateSyntaxTextView string] length]) replacementString:@""]; [tableCreateSyntaxTextView setString:@""]; - [tableCreateSyntaxTextView insertText:[[tableDataInstance tableCreateSyntax] createViewSyntaxPrettifier]]; + NSString *createViewSyntax = [[tableDataInstance tableCreateSyntax] createViewSyntaxPrettifier]; + [tableCreateSyntaxTextView shouldChangeTextInRange:NSMakeRange(0, 0) replacementString:createViewSyntax]; + [tableCreateSyntaxTextView insertText:createViewSyntax]; + [tableCreateSyntaxTextView didChangeText]; [tableCreateSyntaxTextView setEditable:NO]; } else { - [tableCreateSyntaxTextView setEditable:NO]; + [tableCreateSyntaxTextView setEditable:YES]; + [tableCreateSyntaxTextView shouldChangeTextInRange:NSMakeRange(0, [[tableCreateSyntaxTextView string] length]) replacementString:@""]; [tableCreateSyntaxTextView setString:@""]; + [tableCreateSyntaxTextView didChangeText]; + [tableCreateSyntaxTextView setEditable:NO]; } [tableCreatedAt setStringValue:@"Created at: "]; @@ -228,8 +235,10 @@ [tableSizeFree setStringValue:@"Free data size: "]; // Set comments - [tableCommentsTextView setString:@""]; [tableCommentsTextView setEditable:NO]; + [tableCommentsTextView shouldChangeTextInRange:NSMakeRange(0, [[tableCommentsTextView string] length]) replacementString:@""]; + [tableCommentsTextView setString:@""]; + [tableCommentsTextView didChangeText]; return; } @@ -304,13 +313,20 @@ [tableSizeFree setStringValue:[self _formatValueWithKey:@"Data_free" inDictionary:statusFields withLabel:@"Free data size"]]; // Set comments - [tableCommentsTextView setEditable:enableInteraction]; + [tableCommentsTextView setEditable:YES]; + [tableCommentsTextView shouldChangeTextInRange:NSMakeRange(0, [[tableCommentsTextView string] length]) replacementString:[statusFields objectForKey:@"Comment"]]; [tableCommentsTextView setString:[statusFields objectForKey:@"Comment"]]; + [tableCommentsTextView didChangeText]; + [tableCommentsTextView setEditable:enableInteraction]; // Set create syntax [tableCreateSyntaxTextView setEditable:YES]; + [tableCreateSyntaxTextView shouldChangeTextInRange:NSMakeRange(0, [[tableCommentsTextView string] length]) replacementString:@""]; [tableCreateSyntaxTextView setString:@""]; + [tableCreateSyntaxTextView didChangeText]; + [tableCreateSyntaxTextView shouldChangeTextInRange:NSMakeRange(0, 0) replacementString:[tableDataInstance tableCreateSyntax]]; [tableCreateSyntaxTextView insertText:[tableDataInstance tableCreateSyntax]]; + [tableCreateSyntaxTextView didChangeText]; [tableCreateSyntaxTextView setEditable:NO]; } diff --git a/Source/TableContent.m b/Source/TableContent.m index fbce4b33..26d2138e 100644 --- a/Source/TableContent.m +++ b/Source/TableContent.m @@ -2313,7 +2313,7 @@ [tableDataInstance setStatusValue:[NSString stringWithFormat:@"%d", maxNumRows] forKey:@"Rows"]; [tableDataInstance setStatusValue:@"y" forKey:@"RowsCountAccurate"]; [tableInfoInstance tableChanged:nil]; - [[tableDocumentInstance valueForKey:@"extendedTableInfoInstance"] loadTable:selectedTable]; + [[tableDocumentInstance valueForKey:@"extendedTableInfoInstance"] performSelectorOnMainThread:@selector(loadTable:) withObject:selectedTable waitUntilDone:YES]; // Otherwise, if the table status value is accurate, use it } else if ([[tableDataInstance statusValueForKey:@"RowsCountAccurate"] boolValue]) { @@ -2328,7 +2328,7 @@ [tableDataInstance setStatusValue:[NSString stringWithFormat:@"%d", maxNumRows] forKey:@"Rows"]; [tableDataInstance setStatusValue:@"y" forKey:@"RowsCountAccurate"]; [tableInfoInstance tableChanged:nil]; - [[tableDocumentInstance valueForKey:@"extendedTableInfoInstance"] loadTable:selectedTable]; + [[tableDocumentInstance valueForKey:@"extendedTableInfoInstance"] performSelectorOnMainThread:@selector(loadTable:) withObject:selectedTable waitUntilDone:YES]; // Use the estimate count } else { |