NSWindow теряет кнопку миниатюризации на Lion

#objective-c #osx-lion #nswindow #minimize #titlebar

#objective-c #osx-lion #nswindow #свернуть #строка заголовка

Вопрос:

У меня возникла эта проблема в OSX Lion при входе / выходе из полноэкранного режима. Я безуспешно пытался повторно применить маску стиля:

 NSUInteger styleMask = NSResizableWindowMask | NSClosableWindowMask |  NSMiniaturizableWindowMask | NSTitledWindowMask;
styleMask |= NSTexturedBackgroundWindowMask;

window = [[NSWindow alloc] initWithContentRect:windowFrame 
                                      styleMask: styleMask
                                        backing:NSBackingStoreBuffered 
                                          defer:NO];
 

и полноэкранное уведомление

 (void)didExitFull:(NSNotification *)notification {
   NSUInteger styleMask=[window styleMask];
   [window setStyleMask:styleMask|NSMiniaturizableWindowMask];

}
 

Кажется, что кнопка миниатюризации снова не включается.
Я также обнаружил проблемы с удобством использования этого пользовательского интерфейса в MacOSX 10.6 здесь

Комментарии:

1. Я пошел дальше и понял, что по какой-то причине кнопка миниатюризации была просто отключена. Поэтому добавление code [[window standardWindowButton:NSWindowMiniaturizeButton] setEnabled:YES]; code снова активирует кнопку. Проблема в том, что это происходит только тогда, когда окно обновляется, получая фокус от задней части к передней.

Ответ №1:

Пожалуйста, переопределите следующую функцию

 - (NSApplicationPresentationOptions) window:(NSWindow *)window willUseFullScreenPresentationOptions:(NSApplicationPresentationOptions)proposedOptions
{
    return (proposedOptions| NSApplicationPresentationAutoHideToolbar);
}
 

И не устанавливайте styleMask после exitFullscreen . Пусть это сделает система.