aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoravenjamin <avenjamin@gmail.com>2010-09-15 15:02:20 +0000
committeravenjamin <avenjamin@gmail.com>2010-09-15 15:02:20 +0000
commit0909c91b7f986dfe45600bbb6340c79401ccce47 (patch)
tree1f69435a59c49b7ce9ce675e8737e293fab4e70b
parent00ac602d8ca381ce2086b3aa10ca21861e61aa6a (diff)
downloadsequelpro-0909c91b7f986dfe45600bbb6340c79401ccce47.tar.gz
sequelpro-0909c91b7f986dfe45600bbb6340c79401ccce47.tar.bz2
sequelpro-0909c91b7f986dfe45600bbb6340c79401ccce47.zip
Add ability to double click the empty area of the tab bar to create a new tab.
- Slightly limited in that the addTabButton's target and action must be set for it to work.
-rw-r--r--Frameworks/PSMTabBar/PSMTabBarControl.h80
-rw-r--r--Frameworks/PSMTabBar/PSMTabBarControl.m20
-rw-r--r--Source/SPWindowController.m1
3 files changed, 61 insertions, 40 deletions
diff --git a/Frameworks/PSMTabBar/PSMTabBarControl.h b/Frameworks/PSMTabBar/PSMTabBarControl.h
index fdfc8f31..d734f3c8 100644
--- a/Frameworks/PSMTabBar/PSMTabBarControl.h
+++ b/Frameworks/PSMTabBar/PSMTabBarControl.h
@@ -57,63 +57,63 @@ enum {
};
@interface PSMTabBarControl : NSControl {
-
- // control basics
- NSMutableArray *_cells; // the cells that draw the tabs
- IBOutlet NSTabView *tabView; // the tab view being navigated
- PSMOverflowPopUpButton *_overflowPopUpButton; // for too many tabs
- PSMRolloverButton *_addTabButton;
- PSMTabBarController *_controller;
-
- // Spring-loading.
- NSTimer *_springTimer;
- NSTabViewItem *_tabViewItemWithSpring;
+ // control basics
+ NSMutableArray *_cells; // the cells that draw the tabs
+ IBOutlet NSTabView *tabView; // the tab view being navigated
+ PSMOverflowPopUpButton *_overflowPopUpButton; // for too many tabs
+ PSMRolloverButton *_addTabButton;
+ PSMTabBarController *_controller;
- // drawing style
- id<PSMTabStyle> style;
- BOOL _canCloseOnlyTab;
+ // Spring-loading.
+ NSTimer *_springTimer;
+ NSTabViewItem *_tabViewItemWithSpring;
+
+ // drawing style
+ id<PSMTabStyle> style;
+ BOOL _canCloseOnlyTab;
BOOL _disableTabClose;
- BOOL _hideForSingleTab;
- BOOL _showAddTabButton;
- BOOL _sizeCellsToFit;
- BOOL _useOverflowMenu;
+ BOOL _hideForSingleTab;
+ BOOL _showAddTabButton;
+ BOOL _sizeCellsToFit;
+ BOOL _useOverflowMenu;
BOOL _alwaysShowActiveTab;
BOOL _allowsScrubbing;
BOOL _useSafariStyleDragging;
- NSInteger _resizeAreaCompensation;
+ NSInteger _resizeAreaCompensation;
PSMTabBarOrientation _orientation;
BOOL _automaticallyAnimates;
- NSTimer *_animationTimer;
- PSMTabBarTearOffStyle _tearOffStyle;
+ NSTimer *_animationTimer;
+ PSMTabBarTearOffStyle _tearOffStyle;
// behavior
BOOL _allowsBackgroundTabClosing;
BOOL _selectsTabsOnMouseDown;
+ BOOL _createsTabOnDoubleClick;
// vertical tab resizing
BOOL _allowsResizing;
BOOL _resizing;
- // cell width
- NSInteger _cellMinWidth;
- NSInteger _cellMaxWidth;
- NSInteger _cellOptimumWidth;
-
- // animation for hide/show
- NSInteger _currentStep;
- BOOL _isHidden;
- IBOutlet id partnerView; // gets resized when hide/show
- BOOL _awakenedFromNib;
- NSInteger _tabBarWidth;
- NSTimer *_showHideAnimationTimer;
-
- // drag and drop
- NSEvent *_lastMouseDownEvent; // keep this for dragging reference
+ // cell width
+ NSInteger _cellMinWidth;
+ NSInteger _cellMaxWidth;
+ NSInteger _cellOptimumWidth;
+
+ // animation for hide/show
+ NSInteger _currentStep;
+ BOOL _isHidden;
+ IBOutlet id partnerView; // gets resized when hide/show
+ BOOL _awakenedFromNib;
+ NSInteger _tabBarWidth;
+ NSTimer *_showHideAnimationTimer;
+
+ // drag and drop
+ NSEvent *_lastMouseDownEvent; // keep this for dragging reference
BOOL _didDrag;
BOOL _closeClicked;
-
- // MVC help
- IBOutlet id delegate;
+
+ // MVC help
+ IBOutlet id delegate;
}
// control characteristics
@@ -152,6 +152,8 @@ enum {
- (void)setAllowsResizing:(BOOL)value;
- (BOOL)selectsTabsOnMouseDown;
- (void)setSelectsTabsOnMouseDown:(BOOL)value;
+- (BOOL)doubleClickCreatesTab;
+- (void)setDoubleClickCreatesTab:(BOOL)value;
- (BOOL)automaticallyAnimates;
- (void)setAutomaticallyAnimates:(BOOL)value;
- (BOOL)alwaysShowActiveTab;
diff --git a/Frameworks/PSMTabBar/PSMTabBarControl.m b/Frameworks/PSMTabBar/PSMTabBarControl.m
index 53e48729..4c92624e 100644
--- a/Frameworks/PSMTabBar/PSMTabBarControl.m
+++ b/Frameworks/PSMTabBar/PSMTabBarControl.m
@@ -567,6 +567,16 @@
_selectsTabsOnMouseDown = value;
}
+- (BOOL)doubleClickCreatesTab
+{
+ return _createsTabOnDoubleClick;
+}
+
+- (void)setDoubleClickCreatesTab:(BOOL)value
+{
+ _createsTabOnDoubleClick = value;
+}
+
- (BOOL)automaticallyAnimates
{
return _automaticallyAnimates;
@@ -1298,7 +1308,15 @@
}
}
[self setNeedsDisplay:YES];
- }
+ } else {
+ if ([theEvent clickCount] == 2) {
+ // fire create new tab
+ if ([self doubleClickCreatesTab] && [[self addTabButton] target] != nil && [[self addTabButton] action] != nil) {
+ [[[self addTabButton] target] performSelector:[[self addTabButton] action]];
+ }
+ return;
+ }
+ }
}
- (void)mouseDragged:(NSEvent *)theEvent
diff --git a/Source/SPWindowController.m b/Source/SPWindowController.m
index 33a5ae74..341d8afa 100644
--- a/Source/SPWindowController.m
+++ b/Source/SPWindowController.m
@@ -61,6 +61,7 @@
[tabBar setCellMaxWidth:250];
[tabBar setCellOptimumWidth:250];
[tabBar setSelectsTabsOnMouseDown:YES];
+ [tabBar setDoubleClickCreatesTab:YES];
[tabBar setTearOffStyle:PSMTabBarTearOffAlphaWindow];
[tabBar setUsesSafariStyleDragging:YES];