diff --git a/ChangeLog b/ChangeLog index 467215fbb..ab576ba2c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,13 @@ +2014-05-03 Fred Kiefer + + * Source/NSWindow.m: (-setFrame:): Revert last change. + * Source/NSWindow.m: (-encodeWithCoder:, -initWithCoder:): Use + content min/max size instead of min/max size. + * Source/NSWindow.m: (+initialize): Increase version number to 3. + * Source/GSNibLoading.m (NSWindowTemplate -encodeWithCoder:, + -initWithCoder:): Use NSWindowContentMinSize/NSWindowContentMaxSize + instead of NSMinSize/NSMaxSize. + 2014-04-16 17:28-EDT Gregory John Casamento * Headers/Additions/GNUstepGUI/GSXibElement.h diff --git a/Source/GSNibLoading.m b/Source/GSNibLoading.m index 7cad6164c..840f5c9d5 100644 --- a/Source/GSNibLoading.m +++ b/Source/GSNibLoading.m @@ -311,8 +311,10 @@ static BOOL _isInInterfaceBuilder = NO; // style & size _windowStyle = [window styleMask]; _backingStoreType = [window backingType]; - _maxSize = [window maxSize]; - _minSize = [window minSize]; + //_maxSize = [window maxSize]; + //_minSize = [window minSize]; + _maxSize = [window contentMaxSize]; + _minSize = [window contentMinSize]; _windowRect = [window frame]; _screenRect = [[NSScreen mainScreen] frame]; @@ -360,18 +362,37 @@ static BOOL _isInInterfaceBuilder = NO; unsigned long flags = [coder decodeIntForKey: @"NSWTFlags"]; memcpy((void *)&_flags,(void *)&flags,sizeof(struct _GSWindowTemplateFlags)); } - if ([coder containsValueForKey: @"NSMinSize"]) + + if ([coder containsValueForKey: @"NSWindowContentMinSize"]) { - _minSize = [coder decodeSizeForKey: @"NSMinSize"]; + _minSize = [coder decodeSizeForKey: @"NSWindowContentMinSize"]; } - if ([coder containsValueForKey: @"NSMaxSize"]) + else if ([coder containsValueForKey: @"NSMinSize"]) { - _maxSize = [coder decodeSizeForKey: @"NSMaxSize"]; + NSRect rect = NSZeroRect; + rect.size = [coder decodeSizeForKey: @"NSMinSize"]; + rect = [NSWindow contentRectForFrameRect: rect + styleMask: _windowStyle]; + _minSize = rect.size; + } + + if ([coder containsValueForKey: @"NSWindowContentMaxSize"]) + { + _maxSize = [coder decodeSizeForKey: @"NSWindowContentMaxSize"]; + } + else if ([coder containsValueForKey: @"NSMaxSize"]) + { + NSRect rect = NSZeroRect; + rect.size = [coder decodeSizeForKey: @"NSMaxSize"]; + rect = [NSWindow contentRectForFrameRect: rect + styleMask: _windowStyle]; + _maxSize = rect.size; } else { _maxSize = NSMakeSize (10e4, 10e4); } + if ([coder containsValueForKey: @"NSWindowRect"]) { _windowRect = [coder decodeRectForKey: @"NSWindowRect"]; @@ -412,8 +433,8 @@ static BOOL _isInInterfaceBuilder = NO; [aCoder encodeInt: _backingStoreType forKey: @"NSWindowBacking"]; [aCoder encodeObject: _view forKey: @"NSWindowView"]; [aCoder encodeInt: flags forKey: @"NSWTFlags"]; - [aCoder encodeSize: _minSize forKey: @"NSMinSize"]; - [aCoder encodeSize: _maxSize forKey: @"NSMaxSize"]; + [aCoder encodeSize: _minSize forKey: @"NSWindowContentMinSize"]; + [aCoder encodeSize: _maxSize forKey: @"NSWindowContentMaxSize"]; [aCoder encodeRect: rect forKey: @"NSWindowRect"]; [aCoder encodeObject: _title forKey: @"NSWindowTitle"]; [aCoder encodeObject: _autosaveName forKey: @"NSFrameAutosaveName"]; @@ -465,8 +486,8 @@ static BOOL _isInInterfaceBuilder = NO; // reset attributes... [_realObject setContentView: _view]; - [_realObject setMinSize: _minSize]; - [_realObject setMaxSize: _maxSize]; + //[_realObject setMinSize: _minSize]; + //[_realObject setMaxSize: _maxSize]; [_realObject setTitle: _title]; if ([_viewClass isKindOfClass: [NSToolbar class]]) @@ -474,6 +495,9 @@ static BOOL _isInInterfaceBuilder = NO; // FIXME: No idea what is going on here [_realObject setToolbar: (NSToolbar*)_viewClass]; } + + [_realObject setContentMinSize: _minSize]; + [_realObject setContentMaxSize: _maxSize]; [_view _fixSubviews]; diff --git a/Source/NSWindow.m b/Source/NSWindow.m index 6edb1bf74..7d5ccf36d 100644 --- a/Source/NSWindow.m +++ b/Source/NSWindow.m @@ -682,7 +682,7 @@ static NSNotificationCenter *nc = nil; { if (self == [NSWindow class]) { - [self setVersion: 2]; + [self setVersion: 3]; ccSel = @selector(_checkCursorRectangles:forEvent:); ctSel = @selector(_checkTrackingRectangles:forEvent:); ccImp = [self instanceMethodForSelector: ccSel]; @@ -2174,18 +2174,7 @@ titleWithRepresentedFilename(NSString *representedFilename) } if (_maximumSize.height > 0 && frameRect.size.height > _maximumSize.height) { - NSInterfaceStyle style = - NSInterfaceStyleForKey(@"NSMenuInterfaceStyle", nil); - - if (style != NSWindows95InterfaceStyle) - { - frameRect.size.height = _maximumSize.height; - } - else - { - float menuHeight = [[GSTheme theme] menuHeightForWindow:self]; - frameRect.size.height = _maximumSize.height + menuHeight; - } + frameRect.size.height = _maximumSize.height; } if (frameRect.size.width < _minimumSize.width) { @@ -5437,8 +5426,10 @@ current key view.
[aCoder encodeObject: _miniaturizedTitle]; [aCoder encodeObject: _windowTitle]; - [aCoder encodeSize: _minimumSize]; - [aCoder encodeSize: _maximumSize]; + // [aCoder encodeSize: _minimumSize]; + // [aCoder encodeSize: _maximumSize]; + [aCoder encodeSize: [self contentMinSize]]; + [aCoder encodeSize: [self contentMaxSize]]; [aCoder encodeValueOfObjCType: @encode(NSInteger) at: &_windowLevel]; @@ -5491,6 +5482,7 @@ current key view.
NSBackingStoreType aBacking; NSInteger level; id obj; + int version = [aDecoder versionForClassName: @"NSWindow"]; aRect = [aDecoder decodeRect]; [aDecoder decodeValueOfObjCType: @encode(NSUInteger) @@ -5517,10 +5509,20 @@ current key view.
obj = [aDecoder decodeObject]; [self setTitle: obj]; - aSize = [aDecoder decodeSize]; - [self setMinSize: aSize]; - aSize = [aDecoder decodeSize]; - [self setMaxSize: aSize]; + if (version < 3) + { + aSize = [aDecoder decodeSize]; + [self setMinSize: aSize]; + aSize = [aDecoder decodeSize]; + [self setMaxSize: aSize]; + } + else + { + aSize = [aDecoder decodeSize]; + [self setContentMinSize: aSize]; + aSize = [aDecoder decodeSize]; + [self setContentMaxSize: aSize]; + } [aDecoder decodeValueOfObjCType: @encode(NSInteger) at: &level];