diff --git a/ChangeLog b/ChangeLog index f455ecd5f..125c94812 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2006-05-05 Richard Frith-Macdonald + + * Source/NSWindow.m: ([-makeFirstResponder:]) fixed for nil argument. + * Headers/AppKit/NSWindow.h: documented method. + 2006-05-03 Fred Kiefer * Headers/Additions/GNUstepGUI/GSDisplayServer.h (-nativeWindow:::::): diff --git a/Headers/AppKit/NSWindow.h b/Headers/AppKit/NSWindow.h index 43d0e7308..c2323e1c8 100644 --- a/Headers/AppKit/NSWindow.h +++ b/Headers/AppKit/NSWindow.h @@ -393,6 +393,23 @@ style. */ - (NSScreen*) screen; - (NSResponder*) firstResponder; + +/** + * This method attempts to make aResponder the first responder.
+ * If aResponder is already the first responder, this method has no + * effect and simply returns YES. + * Otherwise, the method sends a -resignFirstResponder message to the + * current first responder (if there is one) and immediately returns NO if + * the current first responder refuses to resign.
+ * Then the method asks aResponder to become first responder by sending + * it a -becomeFirstResponder message, and if that returns YES then this + * method immediately returns YES.
+ * However, if that returns NO, the receiver is made the first responder by + * sending it a -becomeFirstResponder message, and this method returns NO.
+ * If aResponder is neither nil nor an instance of NSResponder (or of a + * subclass of NSResponder) then behavior is undefined (though the current + * GNUstep implementation just returns NO). + */ - (BOOL) makeFirstResponder: (NSResponder*)aResponder; /* diff --git a/Source/NSWindow.m b/Source/NSWindow.m index d6ae9328a..aee4d7eee 100644 --- a/Source/NSWindow.m +++ b/Source/NSWindow.m @@ -2667,11 +2667,14 @@ resetCursorRectsForView(NSView *theView) if (_firstResponder == aResponder) return YES; - if (![aResponder isKindOfClass: responderClass]) - return NO; + if (aResponder != nil) + { + if (![aResponder isKindOfClass: responderClass]) + return NO; - if (![aResponder acceptsFirstResponder]) - return NO; + if (![aResponder acceptsFirstResponder]) + return NO; + } /* So that the implementation of -resignFirstResponder in _firstResponder might ask for what will be the new first