aboutsummaryrefslogtreecommitdiffstats
path: root/Source/SPTableContentDelegate.m
diff options
context:
space:
mode:
authorrowanbeentje <rowan@beent.je>2013-08-27 23:52:01 +0000
committerrowanbeentje <rowan@beent.je>2013-08-27 23:52:01 +0000
commit110ffbf58c596add5dfd1d71e7777f90b2a84c00 (patch)
tree233f47fab5bf74b53d24bdf3014699e73339feaa /Source/SPTableContentDelegate.m
parent64eb9b76d33d6cd28a3ad7caee8e792e4a2cffd3 (diff)
downloadsequelpro-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.m20
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];
+ }
+ }
}
}