/* * 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 "cocoa/ScrollableView.h" @interface ScrollableView () - (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