Q:  In my application when my window becomes the key window or the main window, sometimes it doesn't display itself.  What's going on?

A:  There is a bug where display sometimes is disabled in a Window when the window becomes key and/or main.   The result is that a window (or its delegate) tries to do some drawing in its becomeKeyWindow or becomeMainWindow (or windowDidBecomeKey: or windowDidBecomeMain:) method, and the drawing doesn't happen because some drawer observes that display is disabled.

Here's a workaround.  You can do this little dance in either your delegate method or your override of Window's becomeKeyWindow or windowDidBecomeMain.

- windowDidBecomeMain:win
{
BOOL displayWasDisabledForActivation = [NXApp _isInvalid] &&
![win isDisplayEnabled];

if (displayWasDisabledForActivation)
[win reenableDisplay];

/* whatever you do now... */

if (displayWasDisabledForActivation)
[win disableDisplay];
return self;
}

The _isInvalid method is a private method, and as such is undocumented.  Calling this ensures that you are in the case where this bug bites.  We thought this might be prudent in case there was a different time when you really would like display to be disabled.

Valid for 2.0, 3.0

QA661