diff options
author | rowanbeentje <rowan@beent.je> | 2010-03-24 02:30:55 +0000 |
---|---|---|
committer | rowanbeentje <rowan@beent.je> | 2010-03-24 02:30:55 +0000 |
commit | 1ddc896d2f88bea86e4b0457d63f7a53b846851d (patch) | |
tree | ddd832d0b0317905d815e30ca3c0df3b1058a12a /Source/SPHistoryController.m | |
parent | c2351f2220ac01cac614de93bad05022d89d7790 (diff) | |
download | sequelpro-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.m | 41 |
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 |