From a9b60753f9c7a57aae2af50943e3ad81203e73e1 Mon Sep 17 00:00:00 2001 From: Sven Weidauer Date: Thu, 13 Jan 2011 15:19:47 +0000 Subject: Implemented tree view/history window. svn path=/trunk/netsurf/; revision=11309 --- cocoa/ScrollableView.m | 69 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 cocoa/ScrollableView.m (limited to 'cocoa/ScrollableView.m') diff --git a/cocoa/ScrollableView.m b/cocoa/ScrollableView.m new file mode 100644 index 000000000..d50ce5a15 --- /dev/null +++ b/cocoa/ScrollableView.m @@ -0,0 +1,69 @@ +/* + * Copyright 2011 Sven Weidauer + * + * This file is part of NetSurf, http://www.netsurf-browser.org/ + * + * NetSurf 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; version 2 of the License. + * + * NetSurf 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, see . + */ + +#import "ScrollableView.h" + +@interface ScrollableView () + +- (void) adjustFrame; +- (void) frameChangeNotification: (NSNotification *) note; + +@end + +@implementation ScrollableView +@synthesize minimumSize; + +- (void) setMinimumSize: (NSSize)newSize; +{ + minimumSize = newSize; + [self adjustFrame]; +} + +- (void) adjustFrame; +{ + NSSize frameSize = [[self superview] frame].size; + [self setFrameSize: NSMakeSize( MAX( minimumSize.width, frameSize.width ), + MAX( minimumSize.height, frameSize.height ) )]; +} + +- (void) frameChangeNotification: (NSNotification *) note; +{ + [self adjustFrame]; +} + +- (void) viewDidMoveToSuperview; +{ + if (observedSuperview) { + [[NSNotificationCenter defaultCenter] removeObserver: self + name: NSViewFrameDidChangeNotification + object: observedSuperview]; + observedSuperview = nil; + } + + NSView *newSuperView = [self superview]; + + if (nil != newSuperView) { + observedSuperview = newSuperView; + [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(frameChangeNotification:) + name: NSViewFrameDidChangeNotification + object: observedSuperview]; + [observedSuperview setPostsFrameChangedNotifications: YES]; + } +} + +@end -- cgit v1.2.3