Apple Event: May 7th at 7 am PT

Looks like no one’s replied in a while. To start the conversation again, simply ask a new question.

Why NSWindow without styleMask:NSTitledWindowMask can not be keyWindow ?

Problem:
I have one window mainWindow and another childWindow added to mainWindow.
childWindow is kind of WindowExt class. This class I define for catch method call
[ NSWindow becomeKeyWindow]
that must be called after
[childWindow makeKeyWindow]
.
If I create childWindow and try to make it keyWindow on next way:

WindowExt *childWindow = [[WindowExt alloc] initWithContentRect:addedWindowRect
styleMask:NSBorderlessWindowMask |
NSTitledWindowMask
backing:NSBackingStoreBuffered
defer:NO];
[mainWindow addChildWindow:childWindow ordered:NSWindowAbove];
[childWindow makeKeyWindow];

method
[WindowExt becomeKeyWindow]
for childWindow is called - all fine, childWidow become keyWindow.

But if I create childWindow as

WindowExt *childWindow = [[WindowExt alloc] initWithContentRect:addedWindowRect
styleMask:NSBorderlessWindowMask |
backing:NSBackingStoreBuffered
defer:NO];
[mainWindow addChildWindow:childWindow ordered:NSWindowAbove];
[childWindow makeKeyWindow];
without NSTitledWindowMask,
[WindowExt becomeKeyWindow]
for childWindow is never called - childWindow doesn't become keyWindow.

Posted on Feb 9, 2011 5:48 AM

Reply
1 reply

Feb 9, 2011 10:02 PM in response to iruirc

I solved problem.
On cocoa design windows without title or resize bar cannot become key window by default.

If I want a titleless window to be able to become a key window, need to create a subclass of NSWindow and override -canBecomeKeyWindow as follows:

- (BOOL)canBecomeKeyWindow {
return YES;
}

Why NSWindow without styleMask:NSTitledWindowMask can not be keyWindow ?

Welcome to Apple Support Community
A forum where Apple customers help each other with their products. Get started with your Apple ID.