diff --git a/Source/NSClipView.m b/Source/NSClipView.m index a7f99f933..1a31ea5a5 100644 --- a/Source/NSClipView.m +++ b/Source/NSClipView.m @@ -415,4 +415,33 @@ return (_documentView != nil) ? [_documentView becomeFirstResponder] : NO; } +/* + * NSCoding protocol + */ +- (void) encodeWithCoder: (NSCoder*)aCoder +{ + [super encodeWithCoder: aCoder]; + + [aCoder encodeObject: _backgroundColor]; + [aCoder encodeValueOfObjCType: @encode(BOOL) at: &_copiesOnScroll]; + [aCoder encodeObject: _cursor]; + [aCoder encodeObject: _documentView]; +} + +- (id) initWithCoder: (NSCoder*)aDecoder +{ + NSView *document; + + self = [super initWithCoder: aDecoder]; + [self setAutoresizesSubviews: YES]; + + [aDecoder decodeValueOfObjCType: @encode(id) at: &_backgroundColor]; + [aDecoder decodeValueOfObjCType: @encode(BOOL) at: &_copiesOnScroll]; + [aDecoder decodeValueOfObjCType: @encode(id) at: &_cursor]; + + document = [aDecoder decodeObject]; + [self setDocumentView: document]; + + return self; +} @end diff --git a/Source/NSScroller.m b/Source/NSScroller.m index d7c4d61cf..42e3c5ca8 100644 --- a/Source/NSScroller.m +++ b/Source/NSScroller.m @@ -136,10 +136,47 @@ static NSColor *scrollBarColor = nil; - (void) encodeWithCoder: (NSCoder*)aCoder { + [super encodeWithCoder: aCoder]; + + [aCoder encodeValueOfObjCType: @encode(unsigned int) at: &_arrowsPosition]; + [aCoder encodeValueOfObjCType: @encode(BOOL) at: &_isEnabled]; + [aCoder encodeConditionalObject: _target]; + [aCoder encodeValueOfObjCType: @encode(SEL) at: &_action]; + /* We do not save float value, knob proportion. */ } - (id) initWithCoder: (NSCoder*)aDecoder { + self = [super initWithCoder: aDecoder]; + + if (_frame.size.width > _frame.size.height) + { + _isHorizontal = YES; + } + else + { + _isHorizontal = NO; + } + + if (_isHorizontal) + { + _floatValue = 0.0; + } + else + { + _floatValue = 1.0; + } + + _hitPart = NSScrollerNoPart; + + [aDecoder decodeValueOfObjCType: @encode(unsigned int) at: &_arrowsPosition]; + [aDecoder decodeValueOfObjCType: @encode(BOOL) at: &_isEnabled]; + [aDecoder decodeValueOfObjCType: @encode(id) at: &_target]; + [aDecoder decodeValueOfObjCType: @encode(SEL) at: &_action]; + + [self drawParts]; + [self checkSpaceForParts]; + return self; }