diff options
author | rowanbeentje <rowan@beent.je> | 2013-08-27 23:52:01 +0000 |
---|---|---|
committer | rowanbeentje <rowan@beent.je> | 2013-08-27 23:52:01 +0000 |
commit | 110ffbf58c596add5dfd1d71e7777f90b2a84c00 (patch) | |
tree | 233f47fab5bf74b53d24bdf3014699e73339feaa /Source/SPTableContentDelegate.m | |
parent | 64eb9b76d33d6cd28a3ad7caee8e792e4a2cffd3 (diff) | |
download | sequelpro-110ffbf58c596add5dfd1d71e7777f90b2a84c00.tar.gz sequelpro-110ffbf58c596add5dfd1d71e7777f90b2a84c00.tar.bz2 sequelpro-110ffbf58c596add5dfd1d71e7777f90b2a84c00.zip |
- Add the ability for SPTextAndLinkCell arrows to be selectively disabled on a per-cell rather than a per-column basis
- Use this ability in SPTableContentDelegate to disable link arrows if the cell is showing a NULL or (not loaded) value, and also if the current row is being edited and so might be unvalidated. This addresses Issue #1790 and http://spbug.com/l/2306 .
Diffstat (limited to 'Source/SPTableContentDelegate.m')
-rw-r--r-- | Source/SPTableContentDelegate.m | 20 |
1 files changed, 16 insertions, 4 deletions
diff --git a/Source/SPTableContentDelegate.m b/Source/SPTableContentDelegate.m index 8f228aa0..53f65468 100644 --- a/Source/SPTableContentDelegate.m +++ b/Source/SPTableContentDelegate.m @@ -48,6 +48,7 @@ #import "SPTableData.h" #import "SPFieldEditorController.h" #import "SPThreadAdditions.h" +#import "SPTextAndLinkCell.h" #import <pthread.h> #import <SPMySQL/SPMySQL.h> @@ -464,7 +465,8 @@ if (![cell respondsToSelector:@selector(setTextColor:)]) return; - BOOL showCellAsGray = NO; + BOOL cellIsNullOrUnloaded = NO; + BOOL cellIsLinkCell = [cell isMemberOfClass:[SPTextAndLinkCell class]]; NSUInteger columnIndex = [[tableColumn identifier] integerValue]; // If user wants to edit 'cell' set text color to black and return to avoid @@ -473,6 +475,7 @@ && [tableView editedRow] == rowIndex && (NSUInteger)[[NSArrayObjectAtIndex([tableView tableColumns], [tableView editedColumn]) identifier] integerValue] == columnIndex) { [cell setTextColor:blackColor]; + if (cellIsLinkCell) [cell setLinkActive:NO]; return; } @@ -483,22 +486,31 @@ pthread_mutex_lock(&tableValuesLock); if (rowIndex < (NSInteger)tableRowsCount && columnIndex < [tableValues columnCount]) { - showCellAsGray = [tableValues cellIsNullOrUnloadedAtRow:rowIndex column:columnIndex]; + cellIsNullOrUnloaded = [tableValues cellIsNullOrUnloadedAtRow:rowIndex column:columnIndex]; } pthread_mutex_unlock(&tableValuesLock); } else { - showCellAsGray = [tableValues cellIsNullOrUnloadedAtRow:rowIndex column:columnIndex]; + cellIsNullOrUnloaded = [tableValues cellIsNullOrUnloadedAtRow:rowIndex column:columnIndex]; } - if (showCellAsGray) { + if (cellIsNullOrUnloaded) { [cell setTextColor:lightGrayColor]; } else { [cell setTextColor:blackColor]; } + + // Disable link arrows for the currently editing row and for any NULL or unloaded cells + if (cellIsLinkCell) { + if (cellIsNullOrUnloaded || [tableView editedRow] == rowIndex) { + [cell setLinkActive:NO]; + } else { + [cell setLinkActive:YES]; + } + } } } |