* Source/NSBrowser.m (-[NSBrowser setDelegate]):

Set _passiveDelegate to YES for 'nil' delegate.
        Use GSObjCRuntime functions to get selector names.
        Update documentation.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@17765 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
David Ayers 2003-10-02 11:49:10 +00:00
parent 337e3d3e81
commit e9a7c38ea7
2 changed files with 34 additions and 15 deletions

View file

@ -1,7 +1,14 @@
2003-10-02 David Ayers <d.ayers@inode.at>
* Source/NSBrowser.m (-[NSBrowser setDelegate]):
Set _passiveDelegate to YES for 'nil' delegate.
Use GSObjCRuntime functions to get selector names.
Update documentation.
2003-10-02 Andrew Ruder <aereder@ksu.edu>
* Source/NSBrowser.m (-[NSBrowser setDelegate]:): Check for nil
object to allow unsetting the delegate.
* Source/NSBrowser.m (-[NSBrowser setDelegate]): Check for
nil object to allow unsetting the delegate.
2003-09-29 Adam Fedor <fedor@gnu.org>

View file

@ -1726,25 +1726,33 @@ static NSTextFieldCell *titleCell;
return _browserDelegate;
}
/** Sets the NSBrowser's delegate to anObject. Raises
NSBrowserIllegalDelegateException if the delegate specified by
anObject doesn't respond to browser:willDisplayCell:atRow:column: (if
passive) and either of the methods browser:numberOfRowsInColumn: or
browser:createRowsForColumn:inMatrix:. */
/**
* Sets the delegate of the receiver.
* If not nil, the delegate must either be passive and respond to
* [NSObject-browser:numberOfRowsInColumn:] or be active and respond to
* [NSObject-browser:createRowsForColumn:inMatrix:] but not both.
* If the delegate is active it must also respond to
* [NSObject-browser:willDisplayCell:atRow:column:].
* If the delegate is not nil but does not meet these condictions,
* an NSBrowserIllegalDelegateException will be raised.
*/
- (void) setDelegate: (id)anObject
{
BOOL flag = NO;
/* Default to YES for nil delegate. */
_passiveDelegate = YES;
if ([anObject respondsToSelector:
@selector(browser:numberOfRowsInColumn:)])
{
_passiveDelegate = YES;
flag = YES;
if (![anObject respondsToSelector:
@selector(browser:willDisplayCell:atRow:column:)])
[NSException raise: NSBrowserIllegalDelegateException
format: @"(Passive) Delegate does not respond to %s\n",
"browser: willDisplayCell: atRow: column: "];
GSNameFromSelector
(@selector(browser:willDisplayCell:atRow:column:))];
}
if ([anObject respondsToSelector:
@ -1752,14 +1760,16 @@ static NSTextFieldCell *titleCell;
{
_passiveDelegate = NO;
// If flag is already set
// then delegate must respond to both methods
/* If flag is already set
then the delegate must respond to both methods. */
if (flag)
{
[NSException raise: NSBrowserIllegalDelegateException
format: @"Delegate responds to both %s and %s\n",
"browser: numberOfRowsInColumn: ",
"browser: createRowsForColumn: inMatrix: "];
GSNameFromSelector
(@selector(browser:numberOfRowsInColumn:)),
GSNameFromSelector
(@selector(browser:createRowsForColumn:inMatrix:))];
}
flag = YES;
@ -1768,8 +1778,10 @@ static NSTextFieldCell *titleCell;
if (!flag && anObject)
[NSException raise: NSBrowserIllegalDelegateException
format: @"Delegate does not respond to %s or %s\n",
"browser: numberOfRowsInColumn: ",
"browser: createRowsForColumn: inMatrix: "];
GSNameFromSelector
(@selector(browser:numberOfRowsInColumn:)),
GSNameFromSelector
(@selector(browser:createRowsForColumn:inMatrix:))];
_browserDelegate = anObject;
}