2011-01-13 18:19:47 +03:00
|
|
|
/*
|
|
|
|
* Copyright 2011 Sven Weidauer <sven.weidauer@gmail.com>
|
|
|
|
*
|
|
|
|
* 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 <http://www.gnu.org/licenses/>.
|
|
|
|
*/
|
|
|
|
|
2011-01-31 22:12:00 +03:00
|
|
|
#import "cocoa/ScrollableView.h"
|
2011-01-13 18:19:47 +03:00
|
|
|
|
|
|
|
@interface ScrollableView ()
|
|
|
|
|
|
|
|
- (void) frameChangeNotification: (NSNotification *) note;
|
|
|
|
|
|
|
|
@end
|
|
|
|
|
|
|
|
@implementation ScrollableView
|
|
|
|
@synthesize minimumSize;
|
|
|
|
|
2016-02-09 03:34:47 +03:00
|
|
|
- (void) setMinimumSize: (NSSize)newSize
|
2011-01-13 18:19:47 +03:00
|
|
|
{
|
2016-02-09 03:34:47 +03:00
|
|
|
minimumSize = newSize;
|
|
|
|
[self adjustFrame];
|
2011-01-13 18:19:47 +03:00
|
|
|
}
|
|
|
|
|
2016-02-09 03:34:47 +03:00
|
|
|
- (void) adjustFrame
|
2011-01-13 18:19:47 +03:00
|
|
|
{
|
2016-02-09 03:34:47 +03:00
|
|
|
NSSize frameSize = [[self superview] frame].size;
|
|
|
|
[self setFrameSize: NSMakeSize( MAX( minimumSize.width, frameSize.width ),
|
|
|
|
MAX( minimumSize.height, frameSize.height ) )];
|
2011-01-13 18:19:47 +03:00
|
|
|
}
|
|
|
|
|
2016-02-09 03:34:47 +03:00
|
|
|
- (void) frameChangeNotification: (NSNotification *) note
|
2011-01-13 18:19:47 +03:00
|
|
|
{
|
2016-02-09 03:34:47 +03:00
|
|
|
[self adjustFrame];
|
2011-01-13 18:19:47 +03:00
|
|
|
}
|
|
|
|
|
2016-02-09 03:34:47 +03:00
|
|
|
- (void) viewDidMoveToSuperview
|
2011-01-13 18:19:47 +03:00
|
|
|
{
|
2016-02-09 03:34:47 +03:00
|
|
|
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];
|
|
|
|
}
|
2011-01-13 18:19:47 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
@end
|