Implement real coding for NSWindow

git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@5336 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
richard 1999-11-30 19:44:53 +00:00
parent eacf057f16
commit 1232cbaf31
2 changed files with 104 additions and 69 deletions

View file

@ -1,3 +1,8 @@
Tue Nov 30 19:44:00 1999 Richard Frith-Macdonald <richard@brainstorm.co.uk>
* Source/NSWindow.m: Rewrote ([-encodeWithCoder:]) and
([-initWithCoder:]) so they actually work (more or less).
Tue Nov 30 11:52:00 1999 Richard Frith-Macdonald <richard@brainstorm.co.uk> Tue Nov 30 11:52:00 1999 Richard Frith-Macdonald <richard@brainstorm.co.uk>
* Source/NSCachecImageRep.m: Improve initialisation and added * Source/NSCachecImageRep.m: Improve initialisation and added

View file

@ -2690,49 +2690,43 @@ resetCursorRectsForView(NSView *theView)
- (void) encodeWithCoder: (NSCoder*)aCoder - (void) encodeWithCoder: (NSCoder*)aCoder
{ {
BOOL flag; BOOL flag;
id nxt = RETAIN([self nextResponder]);
[self setNextResponder: nil]; [self setNextResponder: nil];
[super encodeWithCoder: aCoder]; [super encodeWithCoder: aCoder];
NSDebugLog(@"NSWindow: start encoding\n"); NSDebugLog(@"NSWindow: start encoding\n");
[aCoder encodeRect: frame]; [aCoder encodeRect: [[self contentView] frame]];
[aCoder encodeValueOfObjCType: @encode(unsigned) at: &style_mask];
[aCoder encodeValueOfObjCType: @encode(NSBackingStoreType) at: &backing_type];
[aCoder encodeObject: content_view]; [aCoder encodeObject: content_view];
[aCoder encodeValueOfObjCType: @encode(int) at: &window_num];
[aCoder encodeObject: background_color]; [aCoder encodeObject: background_color];
[aCoder encodeObject: represented_filename]; [aCoder encodeObject: represented_filename];
[aCoder encodeObject: miniaturized_title]; [aCoder encodeObject: miniaturized_title];
[aCoder encodeObject: window_title]; [aCoder encodeObject: window_title];
[aCoder encodePoint: last_point];
[aCoder encodeSize: minimum_size];
[aCoder encodeSize: maximum_size];
[aCoder encodeValueOfObjCType: @encode(int) at: &window_level];
flag = _f.menu_exclude;
[aCoder encodeValueOfObjCType: @encode(BOOL) at: &flag];
flag = _f.visible; flag = _f.visible;
[aCoder encodeValueOfObjCType: @encode(BOOL) at: &flag]; [aCoder encodeValueOfObjCType: @encode(BOOL) at: &flag];
flag = _f.is_key; flag = _f.is_key;
[aCoder encodeValueOfObjCType: @encode(BOOL) at: &flag]; [aCoder encodeValueOfObjCType: @encode(BOOL) at: &flag];
flag = _f.is_main; flag = _f.is_main;
[aCoder encodeValueOfObjCType: @encode(BOOL) at: &flag]; [aCoder encodeValueOfObjCType: @encode(BOOL) at: &flag];
flag = _f.is_edited;
[aCoder encodeValueOfObjCType: @encode(BOOL) at: &flag];
flag = _f.is_miniaturized;
[aCoder encodeValueOfObjCType: @encode(BOOL) at: &flag];
[aCoder encodeValueOfObjCType: @encode(unsigned) at: &style_mask];
flag = _f.menu_exclude;
[aCoder encodeValueOfObjCType: @encode(BOOL) at: &flag];
// Version 2
[aCoder encodeSize: minimum_size];
[aCoder encodeSize: maximum_size];
[aCoder encodeObject: miniaturized_image];
[aCoder encodeConditionalObject: _initial_first_responder];
[aCoder encodeValueOfObjCType: @encode(NSBackingStoreType) at: &backing_type];
[aCoder encodeValueOfObjCType: @encode(int) at: &window_level];
[aCoder encodeValueOfObjCType: @encode(unsigned) at: &disable_flush_window];
flag = _f.is_one_shot; flag = _f.is_one_shot;
[aCoder encodeValueOfObjCType: @encode(BOOL) at: &flag]; [aCoder encodeValueOfObjCType: @encode(BOOL) at: &flag];
flag = _f.is_autodisplay; flag = _f.is_autodisplay;
[aCoder encodeValueOfObjCType: @encode(BOOL) at: &flag]; [aCoder encodeValueOfObjCType: @encode(BOOL) at: &flag];
flag = _f.optimize_drawing; flag = _f.optimize_drawing;
[aCoder encodeValueOfObjCType: @encode(BOOL) at: &flag]; [aCoder encodeValueOfObjCType: @encode(BOOL) at: &flag];
[aCoder encodeValueOfObjCType: @encode(NSWindowDepth) at: &depth_limit];
flag = _f.dynamic_depth_limit; flag = _f.dynamic_depth_limit;
[aCoder encodeValueOfObjCType: @encode(BOOL) at: &flag]; [aCoder encodeValueOfObjCType: @encode(BOOL) at: &flag];
flag = _f.cursor_rects_enabled; flag = _f.cursor_rects_enabled;
@ -2744,66 +2738,102 @@ resetCursorRectsForView(NSView *theView)
flag = _f.accepts_mouse_moved; flag = _f.accepts_mouse_moved;
[aCoder encodeValueOfObjCType: @encode(BOOL) at: &flag]; [aCoder encodeValueOfObjCType: @encode(BOOL) at: &flag];
[aCoder encodeObject: miniaturized_image];
[aCoder encodeConditionalObject: _initial_first_responder];
NSDebugLog(@"NSWindow: finish encoding\n"); NSDebugLog(@"NSWindow: finish encoding\n");
[self setNextResponder: nxt];
RELEASE(nxt);
} }
- (id) initWithCoder: (NSCoder*)aDecoder - (id) initWithCoder: (NSCoder*)aDecoder
{ {
id oldself = self;
BOOL flag; BOOL flag;
[super initWithCoder: aDecoder]; if ((self = [super initWithCoder: aDecoder]) == oldself)
{
NSSize aSize;
NSRect aRect;
unsigned aStyle;
NSBackingStoreType aBacking;
int anInt;
id obj;
NSDebugLog(@"NSWindow: start decoding\n"); NSDebugLog(@"NSWindow: start decoding\n");
frame = [aDecoder decodeRect]; aRect = [aDecoder decodeRect];
content_view = [aDecoder decodeObject]; [aDecoder decodeValueOfObjCType: @encode(unsigned)
[aDecoder decodeValueOfObjCType: @encode(int) at: &window_num]; at: &aStyle];
[aDecoder decodeValueOfObjCType: @encode(id) at: &background_color]; [aDecoder decodeValueOfObjCType: @encode(NSBackingStoreType)
[aDecoder decodeValueOfObjCType: @encode(id) at: &represented_filename]; at: &aBacking];
[aDecoder decodeValueOfObjCType: @encode(id) at: &miniaturized_title];
[aDecoder decodeValueOfObjCType: @encode(id) at: &window_title];
last_point = [aDecoder decodePoint];
[aDecoder decodeValueOfObjCType: @encode(BOOL) at: &flag];
_f.visible = flag;
[aDecoder decodeValueOfObjCType: @encode(BOOL) at: &flag];
_f.is_key = flag;
[aDecoder decodeValueOfObjCType: @encode(BOOL) at: &flag];
_f.is_main = flag;
[aDecoder decodeValueOfObjCType: @encode(BOOL) at: &flag];
_f.is_edited = flag;
[aDecoder decodeValueOfObjCType: @encode(BOOL) at: &flag];
_f.is_miniaturized = flag;
[aDecoder decodeValueOfObjCType: @encode(unsigned) at: &style_mask];
[aDecoder decodeValueOfObjCType: @encode(BOOL) at: &flag];
_f.menu_exclude = flag;
// Version 2 self = [self initWithContentRect: aRect
minimum_size = [aDecoder decodeSize]; styleMask: aStyle
maximum_size = [aDecoder decodeSize]; backing: aBacking
[aDecoder decodeValueOfObjCType: @encode(id) at: &miniaturized_image]; defer: NO
[aDecoder decodeValueOfObjCType: @encode(id) at: &_initial_first_responder]; screen: nil];
[aDecoder decodeValueOfObjCType: @encode(NSBackingStoreType)
at: &backing_type];
[aDecoder decodeValueOfObjCType: @encode(int) at: &window_level];
[aDecoder decodeValueOfObjCType: @encode(unsigned) at: &disable_flush_window];
[aDecoder decodeValueOfObjCType: @encode(BOOL) at: &flag];
_f.is_one_shot = flag;
[aDecoder decodeValueOfObjCType: @encode(BOOL) at: &flag];
_f.is_autodisplay = flag;
[aDecoder decodeValueOfObjCType: @encode(BOOL) at: &flag];
_f.optimize_drawing = flag;
[aDecoder decodeValueOfObjCType: @encode(NSWindowDepth) at: &depth_limit];
[aDecoder decodeValueOfObjCType: @encode(BOOL) at: &flag];
_f.dynamic_depth_limit = flag;
[aDecoder decodeValueOfObjCType: @encode(BOOL) at: &flag];
_f.cursor_rects_enabled = flag;
[aDecoder decodeValueOfObjCType: @encode(BOOL) at: &flag];
_f.is_released_when_closed = flag;
[aDecoder decodeValueOfObjCType: @encode(BOOL) at: &flag];
_f.hides_on_deactivate = flag;
[aDecoder decodeValueOfObjCType: @encode(BOOL) at: &flag];
_f.accepts_mouse_moved = flag;
NSDebugLog(@"NSWindow: finish decoding\n"); obj = [aDecoder decodeObject];
[self setContentView: obj];
obj = [aDecoder decodeObject];
[self setBackgroundColor: obj];
obj = [aDecoder decodeObject];
[self setRepresentedFilename: obj];
obj = [aDecoder decodeObject];
[self setMiniwindowTitle: obj];
obj = [aDecoder decodeObject];
[self setTitle: obj];
aSize = [aDecoder decodeSize];
[self setMinSize: aSize];
aSize = [aDecoder decodeSize];
[self setMaxSize: aSize];
[aDecoder decodeValueOfObjCType: @encode(int)
at: &anInt];
[self setLevel: anInt];
[aDecoder decodeValueOfObjCType: @encode(BOOL) at: &flag];
[self setExcludedFromWindowsMenu: flag];
[aDecoder decodeValueOfObjCType: @encode(BOOL) at: &flag];
if (flag)
[self orderFrontRegardless];
[aDecoder decodeValueOfObjCType: @encode(BOOL) at: &flag];
if (flag)
[self makeKeyWindow];
[aDecoder decodeValueOfObjCType: @encode(BOOL) at: &flag];
if (flag)
[self makeMainWindow];
[aDecoder decodeValueOfObjCType: @encode(BOOL) at: &flag];
[self setOneShot: flag];
[aDecoder decodeValueOfObjCType: @encode(BOOL) at: &flag];
[self setAutodisplay: flag];
[aDecoder decodeValueOfObjCType: @encode(BOOL) at: &flag];
[self useOptimizedDrawing: flag];
[aDecoder decodeValueOfObjCType: @encode(BOOL) at: &flag];
[self setDynamicDepthLimit: flag];
[aDecoder decodeValueOfObjCType: @encode(BOOL) at: &flag];
if (flag)
[self enableCursorRects];
else
[self disableCursorRects];
[aDecoder decodeValueOfObjCType: @encode(BOOL) at: &flag];
[self setReleasedWhenClosed: flag];
[aDecoder decodeValueOfObjCType: @encode(BOOL) at: &flag];
[self setHidesOnDeactivate: flag];
[aDecoder decodeValueOfObjCType: @encode(BOOL) at: &flag];
[self setAcceptsMouseMovedEvents: flag];
[aDecoder decodeValueOfObjCType: @encode(id)
at: &miniaturized_image];
[aDecoder decodeValueOfObjCType: @encode(id)
at: &_initial_first_responder];
NSDebugLog(@"NSWindow: finish decoding\n");
}
return self; return self;
} }