diff options
author | avenjamin <avenjamin@gmail.com> | 2009-04-10 15:11:22 +0000 |
---|---|---|
committer | avenjamin <avenjamin@gmail.com> | 2009-04-10 15:11:22 +0000 |
commit | b69bbf81201e94b82232e73a0d43a96f10af2fa9 (patch) | |
tree | f207f57773c968610a89108cbc92dfd4e6b01e2c /Source/SPWindowAdditions.m | |
parent | 06bfa0d4c2f79aeda9c3585a80c13845029cfa2d (diff) | |
download | sequelpro-b69bbf81201e94b82232e73a0d43a96f10af2fa9.tar.gz sequelpro-b69bbf81201e94b82232e73a0d43a96f10af2fa9.tar.bz2 sequelpro-b69bbf81201e94b82232e73a0d43a96f10af2fa9.zip |
- part 4 of merge from 'avenjamin' branch into trunk.
- committing Source
Diffstat (limited to 'Source/SPWindowAdditions.m')
-rw-r--r-- | Source/SPWindowAdditions.m | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/Source/SPWindowAdditions.m b/Source/SPWindowAdditions.m new file mode 100644 index 00000000..d5992a86 --- /dev/null +++ b/Source/SPWindowAdditions.m @@ -0,0 +1,75 @@ +// +// SPWindowAdditions.m +// sequel-pro +// +// Created by Stuart Connolly (stuconnolly.com) on Dec 10, 2008 +// +// 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 <http://code.google.com/p/sequel-pro/> + +#import "SPWindowAdditions.h" + +@implementation NSWindow (SPWindowAdditions) + +// ------------------------------------------------------------------------------- +// toolbarHeight +// +// Returns the height of the currently visible toolbar. +// ------------------------------------------------------------------------------- +- (float)toolbarHeight +{ + NSRect windowFrame; + float toolbarHeight = 0.0; + + if (([self toolbar]) && ([[self toolbar] isVisible])) { + windowFrame = [NSWindow contentRectForFrameRect:[self frame] styleMask:[self styleMask]]; + + toolbarHeight = NSHeight(windowFrame) - NSHeight([[self contentView] frame]); + } + + return toolbarHeight; +} + +// ------------------------------------------------------------------------------- +// resizeForContentView:titleBarVisible +// +// Resizes this window to the size of the supplied view. +// ------------------------------------------------------------------------------- +- (void)resizeForContentView:(NSView *)view titleBarVisible:(BOOL)visible +{ + NSSize viewSize = [view frame].size; + NSRect frame = [self frame]; + + if ((viewSize.height) < [self contentMinSize].height) { + viewSize.height = [self contentMinSize].height; + } + + float newHeight = (viewSize.height + [self toolbarHeight]); + + // If the title bar is visible add 22 pixels to new height of window. + if (visible) { + newHeight += 22; + } + + frame.origin.y += frame.size.height - newHeight; + + frame.size.height = newHeight; + frame.size.width = viewSize.width; + + [self setFrame:frame display:YES animate:YES]; +} + +@end |