aboutsummaryrefslogtreecommitdiffstats
path: root/Source/SPTableView.m
diff options
context:
space:
mode:
authorrowanbeentje <rowan@beent.je>2011-04-10 15:35:43 +0000
committerrowanbeentje <rowan@beent.je>2011-04-10 15:35:43 +0000
commit0930c6b49fa7988cb14bdd5fe81c71d5d27f1936 (patch)
tree53815f39cfd69070e908c148f9f48b76ff512645 /Source/SPTableView.m
parent15d0b8bac7736e249e121492ea119e43b61d6bca (diff)
downloadsequelpro-0930c6b49fa7988cb14bdd5fe81c71d5d27f1936.tar.gz
sequelpro-0930c6b49fa7988cb14bdd5fe81c71d5d27f1936.tar.bz2
sequelpro-0930c6b49fa7988cb14bdd5fe81c71d5d27f1936.zip
- Add support in SPTableView to disable edit-on-tab behaviour
- Use this new support in SPTablesList to prevent the tab key entering rename mode when focus is on the table list - this addresses Issue #1028
Diffstat (limited to 'Source/SPTableView.m')
-rw-r--r--Source/SPTableView.m26
1 files changed, 26 insertions, 0 deletions
diff --git a/Source/SPTableView.m b/Source/SPTableView.m
index 65536b6d..5e279dbc 100644
--- a/Source/SPTableView.m
+++ b/Source/SPTableView.m
@@ -36,6 +36,8 @@
@implementation SPTableView
+@synthesize tabEditingDisabled;
+
/**
* Right-click at row will select that row before ordering out the contextual menu
* if not more than one row is selected.
@@ -91,6 +93,19 @@
return YES;
}
+/**
+ * On becomeFirstResponder, if editing is disabled, override the super and just
+ * display instead; this prevents the selected cell from automatically editing
+ * if the table is backtabbed to.
+ */
+- (BOOL)becomeFirstResponder {
+ if (tabEditingDisabled) {
+ [self display];
+ return YES;
+ }
+ return [super becomeFirstResponder];
+}
+
- (void)keyDown:(NSEvent *)theEvent
{
// Check if ENTER or RETURN is hit and edit the column.
@@ -131,11 +146,22 @@
return;
}
}
+
// Check if ESCAPE is hit and use it to cancel row editing if supported
else if ([theEvent keyCode] == 53 && [[self delegate] respondsToSelector:@selector(cancelRowEditing)]) {
if ([[self delegate] cancelRowEditing]) return;
}
+ // If the Tab key is used, but tab editing is disabled, change focus rather than entering edit mode.
+ else if (tabEditingDisabled && [[theEvent characters] length] && [[theEvent characters] characterAtIndex:0] == NSTabCharacter) {
+ if (([theEvent modifierFlags] & NSShiftKeyMask) != NSShiftKeyMask) {
+ [[self window] selectKeyViewFollowingView:self];
+ } else {
+ [[self window] selectKeyViewPrecedingView:self];
+ }
+ return;
+ }
+
[super keyDown:theEvent];
}