diff options
author | Bibiko <bibiko@eva.mpg.de> | 2010-10-30 09:45:43 +0000 |
---|---|---|
committer | Bibiko <bibiko@eva.mpg.de> | 2010-10-30 09:45:43 +0000 |
commit | e3f9028ab739d9e973dd97345605c2abc2a79739 (patch) | |
tree | 03b08d41987d805e0a9599fc41f09253b47cfc7a /Source | |
parent | c93f78981eba6eb1f14dcd00c675c48b675b0494 (diff) | |
download | sequelpro-e3f9028ab739d9e973dd97345605c2abc2a79739.tar.gz sequelpro-e3f9028ab739d9e973dd97345605c2abc2a79739.tar.bz2 sequelpro-e3f9028ab739d9e973dd97345605c2abc2a79739.zip |
• Custom and Content table in-cell editing
- a possible given selection done inside the edited cell will be passed to the field editor sheet for convenience since one often forgets that the field editor sheet mode is active
Diffstat (limited to 'Source')
-rw-r--r-- | Source/SPCopyTable.h | 6 | ||||
-rw-r--r-- | Source/SPCopyTable.m | 10 | ||||
-rw-r--r-- | Source/SPCustomQuery.m | 16 | ||||
-rw-r--r-- | Source/SPFieldEditorController.m | 8 | ||||
-rw-r--r-- | Source/SPTableContent.h | 6 | ||||
-rw-r--r-- | Source/SPTableContent.m | 14 |
6 files changed, 58 insertions, 2 deletions
diff --git a/Source/SPCopyTable.h b/Source/SPCopyTable.h index 49867ac1..4ed8dfb7 100644 --- a/Source/SPCopyTable.h +++ b/Source/SPCopyTable.h @@ -47,8 +47,14 @@ NSUserDefaults *prefs; + NSRange fieldEditorSelectedRange; + } + +- (void)setFieldEditorSelectedRange:(NSRange)aRange; +- (NSRange)fieldEditorSelectedRange; + /*! @method copy: @abstract does the work of copying diff --git a/Source/SPCopyTable.m b/Source/SPCopyTable.m index 98dd45aa..66b97a81 100644 --- a/Source/SPCopyTable.m +++ b/Source/SPCopyTable.m @@ -38,6 +38,16 @@ NSInteger MENU_EDIT_COPY_AS_SQL = 2003; @implementation SPCopyTable +- (void)setFieldEditorSelectedRange:(NSRange)aRange +{ + fieldEditorSelectedRange = aRange; +} + +- (NSRange)fieldEditorSelectedRange +{ + return fieldEditorSelectedRange; +} + - (void)copy:(id)sender { NSString *tmp = nil; diff --git a/Source/SPCustomQuery.m b/Source/SPCustomQuery.m index 831ff44f..4b3ca24b 100644 --- a/Source/SPCustomQuery.m +++ b/Source/SPCustomQuery.m @@ -3436,6 +3436,16 @@ } +- (void)setFieldEditorSelectedRange:(NSRange)aRange +{ + [customQueryView setFieldEditorSelectedRange:aRange]; +} + +- (NSRange)fieldEditorSelectedRange +{ + return [customQueryView fieldEditorSelectedRange]; +} + #pragma mark - - (id)init @@ -3599,6 +3609,9 @@ // Check if current edited field is a blob or should be displayed in field editor sheet if (isBlob || [multipleLineEditingButton state] == NSOnState) { + + [customQueryView setFieldEditorSelectedRange:[fieldEditor selectedRange]]; + // Cancel editing [control abortEditing]; @@ -3680,6 +3693,9 @@ */ - (void)awakeFromNib { + + [customQueryView setFieldEditorSelectedRange:NSMakeRange(0,0)]; + // Set pre-defined menu tags [queryFavoritesSaveAsMenuItem setTag:SP_SAVE_SELECTION_FAVORTITE_MENUITEM_TAG]; [queryFavoritesSaveAllMenuItem setTag:SP_SAVE_ALL_FAVORTITE_MENUITEM_TAG]; diff --git a/Source/SPFieldEditorController.m b/Source/SPFieldEditorController.m index 05266381..a5ec347d 100644 --- a/Source/SPFieldEditorController.m +++ b/Source/SPFieldEditorController.m @@ -29,6 +29,7 @@ #import "SPDataCellFormatter.h" #import "SPTooltip.h" #import "SPGeometryDataView.h" +#import "SPCopyTable.h" #include <objc/objc-runtime.h> @implementation SPFieldEditorController @@ -403,8 +404,11 @@ } // Locate the caret in editTextView - // (to select all takes a bit time for large data) - [editTextView setSelectedRange:NSMakeRange(0,0)]; + // (restore a given selection coming from the in-cell editing mode) + NSRange selRange = [callerInstance fieldEditorSelectedRange]; + [editTextView setSelectedRange:selRange]; + [callerInstance setFieldEditorSelectedRange:NSMakeRange(0,0)]; + // If the string content is NULL select NULL for convenience if([stringValue isEqualToString:[prefs objectForKey:SPNullValue]]) diff --git a/Source/SPTableContent.h b/Source/SPTableContent.h index d1a70a5c..893d767d 100644 --- a/Source/SPTableContent.h +++ b/Source/SPTableContent.h @@ -134,8 +134,14 @@ NSColor *lightGrayColor; SPFieldEditorController *fieldEditor; + NSRange fieldEditorSelectedRange; + } + +- (void)setFieldEditorSelectedRange:(NSRange)aRange; +- (NSRange)fieldEditorSelectedRange; + // Table loading methods and information - (void) loadTable:(NSString *)aTable; - (void) clearTableValues; diff --git a/Source/SPTableContent.m b/Source/SPTableContent.m index 13d58e3a..fe9e37ec 100644 --- a/Source/SPTableContent.m +++ b/Source/SPTableContent.m @@ -171,6 +171,8 @@ [paginationView setFrame:paginationViewFrame]; [contentViewPane addSubview:paginationView]; + [tableContentView setFieldEditorSelectedRange:NSMakeRange(0,0)]; + // Init Filter Table GUI [filterTableDistinctMenuItem setState:(filterTableDistinct) ? NSOnState : NSOffState]; [filterTableNegateCheckbox setState:(filterTableNegate) ? NSOnState : NSOffState]; @@ -4210,6 +4212,8 @@ if ((fieldType = [[tableDataInstance columnWithName:[[NSArrayObjectAtIndex([tableContentView tableColumns], column) headerCell] stringValue]] objectForKey:@"typegrouping"]) && ([fieldType isEqualToString:@"textdata"] || [fieldType isEqualToString:@"blobdata"] || [multipleLineEditingButton state] == NSOnState)) { + [tableContentView setFieldEditorSelectedRange:[fieldEditor selectedRange]]; + // Cancel editing [control abortEditing]; @@ -4475,6 +4479,16 @@ } } +- (void)setFieldEditorSelectedRange:(NSRange)aRange +{ + [tableContentView setFieldEditorSelectedRange:aRange]; +} + +- (NSRange)fieldEditorSelectedRange +{ + return [tableContentView fieldEditorSelectedRange]; +} + #pragma mark - /** |