* Headers/Additions/GNUstepGUI/GSNibLoading.h: Added methods to header

which were added during refactoring.
        * Source/GSNibLoading.m: Corrections to NSCustomView, refactoring.
        Changes to initialization logic to call awakeFromNib.
        * Source/NSBundleAdditions.m: Cleanup to move code to the nib loading
        code.
        * Source/NSClipView.m: Added assertion to guarantee that no
        NSCustomView is unarchived at time of initWithCoder: being called.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@27298 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
Gregory John Casamento 2008-12-15 23:34:09 +00:00
parent 2f0af2bf1b
commit 214c745d1c
5 changed files with 374 additions and 277 deletions

View file

@ -1,3 +1,14 @@
2008-12-15 18:37-EST Gregory John Casamento <greg_casamento@yahoo.com>
* Headers/Additions/GNUstepGUI/GSNibLoading.h: Added methods to header
which were added during refactoring.
* Source/GSNibLoading.m: Corrections to NSCustomView, refactoring.
Changes to initialization logic to call awakeFromNib.
* Source/NSBundleAdditions.m: Cleanup to move code to the nib loading
code.
* Source/NSClipView.m: Added assertion to guarantee that no
NSCustomView is unarchived at time of initWithCoder: being called.
2008-12-15 Fred Kiefer <FredKiefer@gmx.de>
* Source/NSMenuItemCell.m (-_keyEquivalentString): Ignore function

View file

@ -50,9 +50,14 @@
@protocol OSXNibTemplate
- (void) setClassName: (NSString *)className;
- (NSString *)className;
- (void) setRealObject: (id)o;
- (id) realObject;
@end
@protocol GSNibLoading
- (id) nibInstantiate;
@end
typedef struct _GSWindowTemplateFlags
{
#ifdef WORDS_BIGENDIAN
@ -110,7 +115,7 @@ typedef struct _GSWindowTemplateFlags
* when it's unarchived and second, it holds certain attributes (but doesn't set them
* on the window, when the window is being edited in the application builder.
*/
@interface NSWindowTemplate : NSObject <OSXNibTemplate, NSCoding>
@interface NSWindowTemplate : NSObject <OSXNibTemplate, NSCoding, GSNibLoading>
{
NSBackingStoreType _backingStoreType;
NSSize _maxSize;
@ -152,7 +157,6 @@ typedef struct _GSWindowTemplateFlags
- (NSRect)windowRect;
- (void) setScreenRect: (NSRect)rect;
- (NSRect) screenRect;
- (id) realObject;
- (void) setView: (id)view;
- (id) view;
- (Class) baseWindowClass;
@ -163,6 +167,8 @@ typedef struct _GSWindowTemplateFlags
NSString *_className;
id _realObject;
}
- (id) initWithObject: (id)o
className: (NSString *)name;
@end
@interface NSTextTemplate : NSViewTemplate
@ -189,10 +195,9 @@ typedef struct _GSWindowTemplateFlags
}
- (void) setClassName: (NSString *)name;
- (NSString *)className;
- (id)nibInstantiate;
@end
@interface NSCustomObject : NSObject <NSCoding>
@interface NSCustomObject : NSObject <NSCoding, GSNibLoading>
{
NSString *_className;
NSString *_extension;
@ -202,11 +207,9 @@ typedef struct _GSWindowTemplateFlags
- (NSString *)className;
- (void) setExtension: (NSString *)ext;
- (NSString *)extension;
- (void) setObject: (id)obj;
- (id)object;
@end
@interface NSCustomView : NSView
@interface NSCustomView : NSView <GSNibLoading>
{
NSString *_className;
NSString *_extension;
@ -217,7 +220,6 @@ typedef struct _GSWindowTemplateFlags
- (NSString *)className;
- (void) setExtension: (NSString *)view;
- (NSString *)extension;
- (id)nibInstantiate;
- (id)nibInstantiateWithCoder: (NSCoder *)coder;
@end
@ -230,7 +232,6 @@ typedef struct _GSWindowTemplateFlags
- (NSString *)className;
- (void) setResourceName: (NSString *)view;
- (NSString *)resourceName;
- (id)nibInstantiate;
@end
@interface NSClassSwapper : NSObject <NSCoding>
@ -271,7 +272,6 @@ typedef struct _GSWindowTemplateFlags
NSMutableSet *_topLevelObjects;
}
- (id) instantiateObject: (id)obj;
- (void) nibInstantiateWithOwner: (id)owner;
- (void) nibInstantiateWithOwner: (id)owner topLevelObjects: (NSMutableArray *)toplevel;
- (id) objectForName: (NSString *)name;
- (NSString *) nameForObject: (id)name;

View file

@ -84,6 +84,10 @@ static BOOL _isInInterfaceBuilder = NO;
- (void) instantiateWithInstantiator: (id<GSInstantiator>)instantiator;
@end
@interface NSNibConnector (NibCompatibility)
- (void) instantiateWithInstantiator: (id<GSInstantiator>)instantiator;
@end
@interface NSDecimalNumberPlaceholder : NSObject
@end
@ -375,8 +379,6 @@ static BOOL _isInInterfaceBuilder = NO;
if (_realObject == nil)
{
Class aClass;
NSEnumerator *en;
id v = nil;
if ([NSClassSwapper isInInterfaceBuilder])
{
@ -425,16 +427,6 @@ static BOOL _isInInterfaceBuilder = NO;
[_realObject setFrame: [NSWindow frameRectForContentRect: [self windowRect]
styleMask: [self windowStyle]]
display: NO];
// swap out any views which need to be swapped...
en = [[[_realObject contentView] subviews] objectEnumerator];
while ((v = [en nextObject]) != nil)
{
if ([v respondsToSelector: @selector(nibInstantiate)])
{
[v nibInstantiate];
}
}
}
return _realObject;
}
@ -530,6 +522,11 @@ static BOOL _isInInterfaceBuilder = NO;
return _screenRect;
}
- (void) setRealObject: (id)o
{
ASSIGN(_realObject,o);
}
- (id) realObject
{
return _realObject;
@ -571,6 +568,17 @@ static BOOL _isInInterfaceBuilder = NO;
}
}
- (id) initWithObject: (id)o
className: (NSString *)name
{
if((self = [super init]) != nil)
{
[self setRealObject: o];
[self setClassName: name];
}
return self;
}
- (id) initWithCoder: (NSCoder *)coder
{
self = [super initWithCoder: coder];
@ -612,12 +620,14 @@ static BOOL _isInInterfaceBuilder = NO;
if ([coder allowsKeyedCoding])
{
[coder encodeObject: (id)_className forKey: @"NSClassName"];
[_realObject encodeWithCoder: coder];
}
else
{
[NSException raise: NSInvalidArgumentException
format: @"Can't encode %@ with %@.",NSStringFromClass([self class]),
NSStringFromClass([coder class])];
}
}
- (id) nibInstantiate
{
return _realObject;
}
// setters and getters
@ -631,6 +641,11 @@ static BOOL _isInInterfaceBuilder = NO;
return _className;
}
- (void) setRealObject: (id)o
{
ASSIGN(_realObject, o);
}
- (id) realObject
{
return _realObject;
@ -678,11 +693,6 @@ static BOOL _isInInterfaceBuilder = NO;
{
}
- (id) nibInstantiate
{
return nil;
}
- (void) setClassName: (NSString *)className
{
ASSIGN(_menuClass, className);
@ -693,6 +703,11 @@ static BOOL _isInInterfaceBuilder = NO;
return _menuClass;
}
- (void) setRealObject: (id)o
{
ASSIGN(_realObject,o);
}
- (id) realObject
{
return _realObject;
@ -720,12 +735,12 @@ static BOOL _isInInterfaceBuilder = NO;
return _extension;
}
- (void) setObject: (id)obj
- (void) setRealObject: (id)obj
{
ASSIGN(_object, obj);
}
- (id) object
- (id) realObject
{
return _object;
}
@ -785,7 +800,8 @@ static BOOL _isInInterfaceBuilder = NO;
format: @"Unable to find class '%@'", _className];
}
if(GSObjCIsKindOf(aClass, [NSApplication class]))
if(GSObjCIsKindOf(aClass, [NSApplication class]) ||
[_className isEqual: @"NSApplication"])
{
_object = [aClass sharedApplication];
}
@ -799,12 +815,21 @@ static BOOL _isInInterfaceBuilder = NO;
- (void) awakeFromNib
{
if ([_object respondsToSelector: @selector(awakeFromNib)])
NSLog(@"Called awakeFromNib on an NSCustomObject instance: %@", self);
if([_object respondsToSelector: @selector(awakeFromNib)])
{
[_object awakeFromNib];
}
}
- (NSString *) description
{
return [NSString stringWithFormat: @"<%s: %lx> = <<className: %@, object: %@>>",
GSClassNameFromObject(self),
(unsigned long)self,
_className,_object];
}
- (void) dealloc
{
RELEASE(_className);
@ -1014,11 +1039,6 @@ static BOOL _isInInterfaceBuilder = NO;
return _resourceName;
}
- (id)nibInstantiate
{
return self;
}
- (id) initWithCoder: (NSCoder *)coder
{
id realObject = nil;
@ -1271,6 +1291,14 @@ static BOOL _isInInterfaceBuilder = NO;
}
@end
@implementation NSNibConnector (NibCompatibility)
- (void) instantiateWithInstantiator: (id<GSInstantiator>)instantiator
{
_src = [instantiator instantiateObject: _src];
_dst = [instantiator instantiateObject: _dst];
}
@end
@implementation NSNibControlConnector (NibCompatibility)
- (void) instantiateWithInstantiator: (id<GSInstantiator>)instantiator
{
@ -1288,159 +1316,6 @@ static BOOL _isInInterfaceBuilder = NO;
@end
@implementation NSIBObjectData
- (id)instantiateObject: (id)obj
{
id newObject = obj;
if ([obj respondsToSelector: @selector(nibInstantiate)])
{
newObject = [obj nibInstantiate];
}
return newObject;
}
- (void) nibInstantiateWithOwner: (id)owner
{
[self nibInstantiateWithOwner: owner topLevelObjects: nil];
}
- (void) nibInstantiateWithOwner: (id)owner topLevelObjects: (NSMutableArray *)topLevelObjects
{
NSEnumerator *en = [_connections objectEnumerator];
NSArray *objs = NSAllMapTableKeys([self names]);
id obj = nil;
id menu = nil;
// replace the owner with the actual instance provided.
[_root setObject: owner];
// iterate over connections, instantiate, and then establish them.
while ((obj = [en nextObject]) != nil)
{
if ([obj respondsToSelector: @selector(instantiateWithInstantiator:)])
{
[obj instantiateWithInstantiator: self];
[obj establishConnection];
}
}
// iterate over all objects instantiate windows, awaken objects and fill
// in top level array.
en = [objs objectEnumerator];
while ((obj = [en nextObject]) != nil)
{
// instantiate all windows and fill in the top level array.
if ([obj isKindOfClass: [NSWindowTemplate class]])
{
if ([obj realObject] == nil)
{
obj = [self instantiateObject: obj];
[topLevelObjects addObject: obj];
}
}
else
{
id v = NSMapGet(_objects, obj);
if (v == nil || v == owner)
{
[topLevelObjects addObject: obj];
}
}
// awaken the object.
if ([obj respondsToSelector: @selector(awakeFromNib)])
{
[obj awakeFromNib];
}
}
// bring visible windows to front...
en = [_visibleWindows objectEnumerator];
while ((obj = [en nextObject]) != nil)
{
id w = [obj realObject];
[w orderFront: self];
}
// add the menu...
menu = [self objectForName: @"MainMenu"];
if (menu != nil)
{
menu = [self instantiateObject: menu];
[NSApp _setMainMenu: menu];
}
}
- (void) awakeWithContext: (NSDictionary *)context
{
NSMutableArray *tlo = [context objectForKey: @"NSTopLevelObjects"];
id owner = [context objectForKey: @"NSOwner"];
[self nibInstantiateWithOwner: owner topLevelObjects: tlo];
}
- (NSMutableArray *) connections
{
return _connections;
}
- (NSMutableSet *) topLevelObjects
{
return _topLevelObjects;
}
- (NSMutableDictionary *) nameTable
{
return nil;
}
- (NSMutableArray *) visibleWindows
{
return _visibleWindows;
}
- (NSMapTable *) objects
{
return _objects;
}
- (NSMapTable *) names
{
return _names;
}
- (NSMapTable *) classes
{
return _classes;
}
- (NSMapTable *) oids
{
return _oids;
}
- (id) objectForName: (NSString *)name
{
NSArray *nameKeys = (NSArray *)NSAllMapTableKeys(_names);
NSArray *nameValues = (NSArray *)NSAllMapTableValues(_names);
int i = [nameValues indexOfObject: name];
id result = nil;
if (i != NSNotFound)
{
result = [nameKeys objectAtIndex: i];
}
return result;
}
- (NSString *) nameForObject: (id)obj
{
NSArray *nameKeys = (NSArray *)NSAllMapTableKeys(_names);
NSArray *nameValues = (NSArray *)NSAllMapTableValues(_names);
int i = [nameKeys indexOfObject: obj];
NSString *result = [nameValues objectAtIndex: i];
return result;
}
/**
* Get the values from the map in the same order as the keys.
*/
@ -1457,6 +1332,31 @@ static BOOL _isInInterfaceBuilder = NO;
return result;
}
/**
* Build a map with two arrays of keys and values.
*/
- (void) _buildMap: (NSMapTable *)mapTable
withKeys: (NSArray *)keys
andValues: (NSArray *)values
{
NSEnumerator *ken = [keys objectEnumerator];
NSEnumerator *ven = [values objectEnumerator];
id key = nil;
id value = nil;
while ((key = [ken nextObject]) != nil && (value = [ven nextObject]) != nil)
{
NSMapInsert(mapTable, key, value);
if(value == nil)
{
NSLog(@"==> WARNING: Value for key %@ is %@",key , value);
}
}
}
/**
* Encode the NSIBObjectData.
*/
- (void) encodeWithCoder: (NSCoder *)coder
{
if ([coder allowsKeyedCoding])
@ -1500,92 +1400,90 @@ static BOOL _isInInterfaceBuilder = NO;
}
}
- (void) _buildMap: (NSMapTable *)mapTable
withKeys: (NSArray *)keys
andValues: (NSArray *)values
{
NSEnumerator *ken = [keys objectEnumerator];
NSEnumerator *ven = [values objectEnumerator];
id key = nil;
id value = nil;
while ((key = [ken nextObject]) != nil && (value = [ven nextObject]) != nil)
{
NSMapInsert(mapTable, key, value);
if(value == nil)
{
NSLog(@"==> WARNING: Value for key %@ is %@",key , value);
}
}
}
/**
* Decode the NSIBObjectData.
*/
- (id) initWithCoder: (NSCoder *)coder
{
if ([coder allowsKeyedCoding])
{
NSArray *nameKeys = nil;
NSArray *nameValues = nil;
NSArray *classKeys = nil;
NSArray *classValues = nil;
ASSIGN(_root, [coder decodeObjectForKey: @"NSRoot"]);
ASSIGN(_visibleWindows, (NSMutableArray *)[coder decodeObjectForKey: @"NSVisibleWindows"]);
ASSIGN(_accessibilityConnectors, (NSMutableArray *)[coder decodeObjectForKey: @"NSAccessibilityConnectors"]);
ASSIGN(_visibleWindows,
(NSMutableArray *)[coder decodeObjectForKey: @"NSVisibleWindows"]);
ASSIGN(_accessibilityConnectors,
(NSMutableArray *)[coder decodeObjectForKey: @"NSAccessibilityConnectors"]);
ASSIGN(_fontManager, [coder decodeObjectForKey: @"NSFontManager"]);
ASSIGN(_framework, [coder decodeObjectForKey: @"NSFramework"]);
_nextOid = [coder decodeIntForKey: @"NSNextOid"];
{
NSArray *objectsKeys = (NSArray *)
[coder decodeObjectForKey: @"NSObjectsKeys"];
NSArray *objectsValues = (NSArray *)
[coder decodeObjectForKey: @"NSObjectsValues"];
NSArray *nameKeys = (NSArray *)
[coder decodeObjectForKey: @"NSNamesKeys"];
NSArray *nameValues = (NSArray *)
[coder decodeObjectForKey: @"NSNamesValues"];
NSArray *oidsKeys = (NSArray *)
[coder decodeObjectForKey: @"NSOidsKeys"];
NSArray *oidsValues = (NSArray *)
[coder decodeObjectForKey: @"NSOidsValues"];
NSArray *classKeys = (NSArray *)
[coder decodeObjectForKey: @"NSClassesKeys"];
NSArray *classValues = (NSArray *)
[coder decodeObjectForKey: @"NSClassesValues"];
NSArray *accessibilityOidsKeys = (NSArray *)
[coder decodeObjectForKey: @"NSAccessibilityOidsKeys"];
NSArray *accessibilityOidsValues = (NSArray *)
[coder decodeObjectForKey: @"NSAccessibilityOidsValues"];
// instantiate the maps..
_objects = NSCreateMapTable(NSObjectMapKeyCallBacks,
NSObjectMapValueCallBacks, 2);
_names = NSCreateMapTable(NSObjectMapKeyCallBacks,
/*
objectsKeys = (NSArray *)
[coder decodeObjectForKey: @"NSObjectsKeys"];
objectsValues = (NSArray *)
[coder decodeObjectForKey: @"NSObjectsValues"];
*/
nameKeys = (NSArray *)
[coder decodeObjectForKey: @"NSNamesKeys"];
nameValues = (NSArray *)
[coder decodeObjectForKey: @"NSNamesValues"];
/*
oidsKeys = (NSArray *)
[coder decodeObjectForKey: @"NSOidsKeys"];
oidsValues = (NSArray *)
[coder decodeObjectForKey: @"NSOidsValues"];
*/
classKeys = (NSArray *)
[coder decodeObjectForKey: @"NSClassesKeys"];
classValues = (NSArray *)
[coder decodeObjectForKey: @"NSClassesValues"];
/*
accessibilityOidsKeys = (NSArray *)
[coder decodeObjectForKey: @"NSAccessibilityOidsKeys"];
accessibilityOidsValues = (NSArray *)
[coder decodeObjectForKey: @"NSAccessibilityOidsValues"];
*/
// instantiate the maps..
_objects = NSCreateMapTable(NSObjectMapKeyCallBacks,
NSObjectMapValueCallBacks, 2);
_oids = NSCreateMapTable(NSObjectMapKeyCallBacks,
NSObjectMapValueCallBacks, 2);
_classes = NSCreateMapTable(NSObjectMapKeyCallBacks,
NSObjectMapValueCallBacks, 2);
_accessibilityOids = NSCreateMapTable(NSObjectMapKeyCallBacks,
NSObjectMapValueCallBacks, 2);
// fill in the maps...
[self _buildMap: _accessibilityOids
withKeys: accessibilityOidsKeys
andValues: accessibilityOidsValues];
[self _buildMap: _classes
withKeys: classKeys
andValues: classValues];
[self _buildMap: _names
withKeys: nameKeys
andValues: nameValues];
[self _buildMap: _objects
withKeys: objectsKeys
andValues: objectsValues];
[self _buildMap: _oids
withKeys: oidsKeys
andValues: oidsValues];
ASSIGN(_connections, [[coder decodeObjectForKey: @"NSConnections"] mutableCopy]);
// instantiate...
_topLevelObjects = [[NSMutableSet alloc] init];
}
_names = NSCreateMapTable(NSObjectMapKeyCallBacks,
NSObjectMapValueCallBacks, 2);
_oids = NSCreateMapTable(NSObjectMapKeyCallBacks,
NSObjectMapValueCallBacks, 2);
_classes = NSCreateMapTable(NSObjectMapKeyCallBacks,
NSObjectMapValueCallBacks, 2);
_accessibilityOids = NSCreateMapTable(NSObjectMapKeyCallBacks,
NSObjectMapValueCallBacks, 2);
// Fill in the maps...
/*
[self _buildMap: _accessibilityOids
withKeys: accessibilityOidsKeys
andValues: accessibilityOidsValues];
*/
[self _buildMap: _classes
withKeys: classKeys
andValues: classValues];
[self _buildMap: _names
withKeys: nameKeys
andValues: nameValues];
/*
[self _buildMap: _objects
withKeys: objectsKeys
andValues: objectsValues];
[self _buildMap: _oids
withKeys: oidsKeys
andValues: oidsValues];
*/
ASSIGN(_connections, [[coder decodeObjectForKey: @"NSConnections"] mutableCopy]);
// instantiate...
_topLevelObjects = [[NSMutableSet alloc] init];
}
else
{
@ -1597,6 +1495,9 @@ static BOOL _isInInterfaceBuilder = NO;
return self;
}
/**
* Instantiate a new one.
*/
- (id) init
{
if ((self = [super init]) != nil)
@ -1625,6 +1526,9 @@ static BOOL _isInInterfaceBuilder = NO;
return self;
}
/**
* Deallocate.
*/
- (void) dealloc
{
// free the maps.
@ -1645,6 +1549,149 @@ static BOOL _isInInterfaceBuilder = NO;
[super dealloc];
}
/**
* Call nibInstantiate on an object, if it responds to the nibInstantiate selector.
*/
- (id)instantiateObject: (id)obj
{
id newObject = obj;
if ([obj respondsToSelector: @selector(nibInstantiate)])
{
newObject = [obj nibInstantiate];
}
return newObject;
}
/**
* Instantiate all of the objects in the nib file.
*/
- (void) nibInstantiateWithOwner: (id)owner topLevelObjects: (NSMutableArray *)topLevelObjects
{
NSEnumerator *en = [_connections objectEnumerator];
NSArray *objs = NSAllMapTableKeys([self names]);
id obj = nil;
id menu = nil;
// set the new root object.
[_root setRealObject: owner];
// iterate over connections, instantiate, and then establish them.
while ((obj = [en nextObject]) != nil)
{
if ([obj respondsToSelector: @selector(instantiateWithInstantiator:)])
{
[obj instantiateWithInstantiator: self];
[obj establishConnection];
}
}
// iterate over all objects instantiate windows, awaken objects and fill
// in top level array.
en = [objs objectEnumerator];
while ((obj = [en nextObject]) != nil)
{
// instantiate all windows and fill in the top level array.
if ([obj isKindOfClass: [NSWindowTemplate class]])
{
if ([obj realObject] == nil)
{
obj = [self instantiateObject: obj];
[topLevelObjects addObject: obj];
}
}
else
{
id v = NSMapGet(_objects, obj);
if (v == nil || v == owner)
{
[topLevelObjects addObject: obj];
}
}
// awaken the object.
if ([obj respondsToSelector: @selector(awakeFromNib)])
{
[obj awakeFromNib];
}
}
// awaken the owner.
if([owner respondsToSelector: @selector(awakeFromNib)])
{
[owner awakeFromNib];
}
// bring visible windows to front...
en = [_visibleWindows objectEnumerator];
while ((obj = [en nextObject]) != nil)
{
id w = [obj realObject];
[w orderFront: self];
}
// add the menu...
menu = [self objectForName: @"MainMenu"];
if (menu != nil)
{
menu = [self instantiateObject: menu];
[NSApp _setMainMenu: menu];
}
}
/**
* Awake after loading the nib and extract the top level and owner for nib instantiation,
* then call nibInstantateWithOwner:topLevelObjects:
*/
- (void) awakeWithContext: (NSDictionary *)context
{
NSMutableArray *tlo = [context objectForKey: @"NSTopLevelObjects"];
id owner = [context objectForKey: @"NSOwner"];
// get using the alternate names.
if(tlo == nil)
{
tlo = [context objectForKey: @"NSNibTopLevelObjects"];
}
if(owner == nil)
{
owner = [context objectForKey: @"NSNibOwner"];
}
// instantiate...
[self nibInstantiateWithOwner: owner topLevelObjects: tlo];
}
/**
* Retrieve an object by name from the map.
*/
- (id) objectForName: (NSString *)name
{
NSArray *nameKeys = (NSArray *)NSAllMapTableKeys(_names);
NSArray *nameValues = (NSArray *)NSAllMapTableValues(_names);
int i = [nameValues indexOfObject: name];
id result = nil;
if (i != NSNotFound)
{
result = [nameKeys objectAtIndex: i];
}
return result;
}
/**
* Get the name for an object.
*/
- (NSString *) nameForObject: (id)obj
{
NSArray *nameKeys = (NSArray *)NSAllMapTableKeys(_names);
NSArray *nameValues = (NSArray *)NSAllMapTableValues(_names);
int i = [nameKeys indexOfObject: obj];
NSString *result = [nameValues objectAtIndex: i];
return result;
}
- (void) setRoot: (id) root
{
ASSIGN(_root, root);
@ -1664,6 +1711,46 @@ static BOOL _isInInterfaceBuilder = NO;
{
return _nextOid;
}
- (NSMutableArray *) connections
{
return _connections;
}
- (NSMutableSet *) topLevelObjects
{
return _topLevelObjects;
}
- (NSMutableDictionary *) nameTable
{
return nil;
}
- (NSMutableArray *) visibleWindows
{
return _visibleWindows;
}
- (NSMapTable *) objects
{
return _objects;
}
- (NSMapTable *) names
{
return _names;
}
- (NSMapTable *) classes
{
return _classes;
}
- (NSMapTable *) oids
{
return _oids;
}
@end
@implementation NSButtonImageSource

View file

@ -174,13 +174,6 @@
[self label]];
return desc;
}
- (void) instantiateWithInstantiator: (id<GSInstantiator>)instantiator
{
_src = [instantiator instantiateObject: _src];
_dst = [instantiator instantiateObject: _dst];
}
@end
@implementation NSNibControlConnector

View file

@ -28,6 +28,7 @@
#include "config.h"
#include <Foundation/NSNotification.h>
#include <Foundation/NSException.h>
#include "AppKit/NSClipView.h"
#include "AppKit/NSCursor.h"
@ -38,6 +39,8 @@
#include "AppKit/NSWindow.h"
#include "AppKit/PSOperators.h"
#include <GNUstepGUI/GSNibLoading.h>
#include <math.h>
DEFINE_RINT_IF_MISSING
@ -789,6 +792,9 @@ static inline NSRect integralRect (NSRect rect, NSView *view)
if ([[self subviews] count] > 0)
{
id document = [aDecoder decodeObjectForKey: @"NSDocView"];
NSAssert([document class] != [NSCustomView class],
NSInvalidArgumentException);
NSRect rect = [document frame];
rect.origin = NSZeroPoint;
[document setFrame: rect];