aboutsummaryrefslogtreecommitdiffstats
path: root/Source/SPHistoryController.m
diff options
context:
space:
mode:
authorrowanbeentje <rowan@beent.je>2010-03-24 02:30:55 +0000
committerrowanbeentje <rowan@beent.je>2010-03-24 02:30:55 +0000
commit1ddc896d2f88bea86e4b0457d63f7a53b846851d (patch)
treeddd832d0b0317905d815e30ca3c0df3b1058a12a /Source/SPHistoryController.m
parentc2351f2220ac01cac614de93bad05022d89d7790 (diff)
downloadsequelpro-1ddc896d2f88bea86e4b0457d63f7a53b846851d.tar.gz
sequelpro-1ddc896d2f88bea86e4b0457d63f7a53b846851d.tar.bz2
sequelpro-1ddc896d2f88bea86e4b0457d63f7a53b846851d.zip
- Add a new selectDatabase:item: method to TableDocument, to centralise code for selecting databases and tables. Clean up database selection to use this new method, and avoid reloads when re-selecting the same database.
- Convert the history controller to use this new call. This fixes history behaviour when a table list filter was active. - Convert the (hidden) navigator to use this new call. This fixes timing issues. - Make some thread safety tweaks to TablesList. - Change TablesList selectTableOrViewWithName: to selectItemWithName:, including procs etc.
Diffstat (limited to 'Source/SPHistoryController.m')
-rw-r--r--Source/SPHistoryController.m41
1 files changed, 14 insertions, 27 deletions
diff --git a/Source/SPHistoryController.m b/Source/SPHistoryController.m
index 991c6e1e..c1c6b386 100644
--- a/Source/SPHistoryController.m
+++ b/Source/SPHistoryController.m
@@ -325,35 +325,22 @@
return;
}
- // Check and set the database
- if (![[theDocument database] isEqualToString:[historyEntry objectForKey:@"database"]]) {
- NSPopUpButton *chooseDatabaseButton = [theDocument valueForKey:@"chooseDatabaseButton"];
- [tablesListInstance setTableListSelectability:YES];
- [[tablesListInstance valueForKey:@"tablesListView"] deselectAll:self];
- [theDocument setDatabaseListIsSelectable:YES];
- [tablesListInstance setTableListSelectability:YES];
- [chooseDatabaseButton selectItemWithTitle:[historyEntry objectForKey:@"database"]];
- [theDocument chooseDatabase:self];
- if (![[theDocument database] isEqualToString:[historyEntry objectForKey:@"database"]]) {
- return [self abortEntryLoadWithPool:loadPool];
- }
+ // If the same table was selected, mark the content as requiring a reload
+ if ([historyEntry objectForKey:@"table"] && [[theDocument table] isEqualToString:[historyEntry objectForKey:@"table"]]) {
+ [tablesListInstance setContentRequiresReload:YES];
}
- // Check and set the table
- if ([historyEntry objectForKey:@"table"] && ![[theDocument table] isEqualToString:[historyEntry objectForKey:@"table"]]) {
- NSArray *tables = [tablesListInstance tables];
- if ([tables indexOfObject:[historyEntry objectForKey:@"table"]] == NSNotFound) {
- return [self abortEntryLoadWithPool:loadPool];
- }
- [[tablesListInstance valueForKey:@"tablesListView"] selectRowIndexes:[NSIndexSet indexSetWithIndex:[tables indexOfObject:[historyEntry objectForKey:@"table"]]] byExtendingSelection:NO];
- if (![[theDocument table] isEqualToString:[historyEntry objectForKey:@"table"]]) {
- return [self abortEntryLoadWithPool:loadPool];
- }
- } else if (![historyEntry objectForKey:@"table"] && [theDocument table]) {
- [tablesListInstance setTableListSelectability:YES];
- [[tablesListInstance valueForKey:@"tablesListView"] deselectAll:self];
- } else {
- [tablesListInstance setContentRequiresReload:YES];
+ // Update the database and table name if necessary
+ [theDocument selectDatabase:[historyEntry objectForKey:@"database"] item:[historyEntry objectForKey:@"table"]];
+
+ // If the database or table couldn't be selected, error.
+ if ((![[theDocument database] isEqualToString:[historyEntry objectForKey:@"database"]]
+ && ([theDocument database] || [historyEntry objectForKey:@"database"]))
+ ||
+ (![[theDocument table] isEqualToString:[historyEntry objectForKey:@"table"]]
+ && ([theDocument table] || [historyEntry objectForKey:@"table"])))
+ {
+ return [self abortEntryLoadWithPool:loadPool];
}
// Check and set the view