From db80c9b84be4326d2e2d36839c532159fb9d61fd Mon Sep 17 00:00:00 2001 From: stuconnolly Date: Wed, 10 Nov 2010 18:38:45 +0000 Subject: Add a new outline view to be used by the connection view so hitting enter doesn't start editing the selected favorite. This will also allow behaviour to be further customised. Fixes issue #892. --- Source/SPFavoritesOutlineView.h | 28 ++++++++++++++++ Source/SPFavoritesOutlineView.m | 71 +++++++++++++++++++++++++++++++++++++++++ Source/SPOutlineView.m | 36 --------------------- 3 files changed, 99 insertions(+), 36 deletions(-) create mode 100644 Source/SPFavoritesOutlineView.h create mode 100644 Source/SPFavoritesOutlineView.m (limited to 'Source') diff --git a/Source/SPFavoritesOutlineView.h b/Source/SPFavoritesOutlineView.h new file mode 100644 index 00000000..e9972d99 --- /dev/null +++ b/Source/SPFavoritesOutlineView.h @@ -0,0 +1,28 @@ +// +// $Id$ +// +// SPFavoritesOutlineView.h +// sequel-pro +// +// Created by Stuart Connolly (stuconnolly.com) on November 10, 2010 +// Copyright (c) 2010 Stuart Connolly. All rights reserved. +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// More info at + +@interface SPFavoritesOutlineView : NSOutlineView + +@end diff --git a/Source/SPFavoritesOutlineView.m b/Source/SPFavoritesOutlineView.m new file mode 100644 index 00000000..6930c281 --- /dev/null +++ b/Source/SPFavoritesOutlineView.m @@ -0,0 +1,71 @@ +// +// $Id$ +// +// SPFavoritesOutlineView.m +// sequel-pro +// +// Created by Stuart Connolly (stuconnolly.com) on November 10, 2010 +// Copyright (c) 2010 Stuart Connolly. All rights reserved. +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// More info at + +#import "SPFavoritesOutlineView.h" + +@implementation SPFavoritesOutlineView + +- (BOOL)acceptsFirstResponder +{ + return YES; +} + +/** + * Right-click at row will select that row before ordering out the contextual menu + * if not more than one row is selected. + */ +- (NSMenu *)menuForEvent:(NSEvent *)event +{ + // If more than one row is selected only return the default contextual menu + if ([self numberOfSelectedRows] > 1) return [self menu]; + + // Right-click at a row will select that row before ordering out the context menu + NSInteger row = [self rowAtPoint:[self convertPoint:[event locationInWindow] fromView:nil]]; + + if ((row >= 0) && (row < [self numberOfRows])) { + [self selectRowIndexes:[NSIndexSet indexSetWithIndex:row] byExtendingSelection:NO]; + [[self window] makeFirstResponder:self]; + } + + return [self menu]; +} + +/** + * To prevent right-clicking in a column's 'group' heading, ask the delegate if we support selecting it + * as this normally doesn't apply to left-clicks. If we do support selecting this row, simply pass on the event. + */ +- (void)rightMouseDown:(NSEvent *)event +{ + if ([[self delegate] respondsToSelector:@selector(outlineView:shouldSelectItem:)]) { + if ([[self delegate] outlineView:self shouldSelectItem:[self itemAtRow:[self rowAtPoint:[self convertPoint:[event locationInWindow] fromView:nil]]]]) { + [super rightMouseDown:event]; + } + } + else { + [super rightMouseDown:event]; + } +} + +@end diff --git a/Source/SPOutlineView.m b/Source/SPOutlineView.m index 7ae50072..f60807f3 100644 --- a/Source/SPOutlineView.m +++ b/Source/SPOutlineView.m @@ -42,40 +42,4 @@ } } -/** - * Right-click at row will select that row before ordering out the contextual menu - * if not more than one row is selected. - */ -- (NSMenu *)menuForEvent:(NSEvent *)event -{ - // If more than one row is selected only return the default contextual menu - if ([self numberOfSelectedRows] > 1) return [self menu]; - - // Right-click at a row will select that row before ordering out the context menu - NSInteger row = [self rowAtPoint:[self convertPoint:[event locationInWindow] fromView:nil]]; - - if ((row >= 0) && (row < [self numberOfRows])) { - [self selectRowIndexes:[NSIndexSet indexSetWithIndex:row] byExtendingSelection:NO]; - [[self window] makeFirstResponder:self]; - } - - return [self menu]; -} - -/** - * To prevent right-clicking in a column's 'group' heading, ask the delegate if we support selecting it - * as this normally doesn't apply to left-clicks. If we do support selecting this row, simply pass on the event. - */ -- (void)rightMouseDown:(NSEvent *)event -{ - if ([[self delegate] respondsToSelector:@selector(outlineView:shouldSelectItem:)]) { - if ([[self delegate] outlineView:self shouldSelectItem:[self itemAtRow:[self rowAtPoint:[self convertPoint:[event locationInWindow] fromView:nil]]]]) { - [super rightMouseDown:event]; - } - } - else { - [super rightMouseDown:event]; - } -} - @end -- cgit v1.2.3