Показать скрытое NSwindow с помощью setHidesOnDeactivate? - PullRequest
2 голосов
/ 29 мая 2011

Я почти уверен, что ответ должен быть довольно простым, но по какой-то причине я не могу заставить его работать!

У меня есть окно, и этот код:

[someWindow setHidesOnDeactivate:YES];

У меня есть элемент состояния и следующий код

- (void)openWindow{
   if ([someWindow isVisible]) {
         NSLog(@"CLOSING");
         [lyricWindow close];
   }else {
          [someWindow makeKeyAndOrderFront:nil];
         NSLog(@"SHOWING");
   }

}

Это сработало, когда я закрыл окно и хотел открыть его снова.Теперь, когда я реализовал шкурки деактивации, я потерялся в том, что мне нужно делать!Я перепробовал все виды вещей ... Я хочу, чтобы окно снова показывалось, и окно становилось активным, когда я нажимал на элемент статуса!Я думаю, что это моя проблема.

Как сделать окно активным, когда я нажимаю на элемент состояния?

В журнале появляется следующее:

ЗАКРЫТЬ ПОКАЗАТЬ ЗАКРЫТЬ ПОКАЗАТЬ

Закрытие выполняется первым независимо от того, скрыто окно или нет, что довольно интригующе, потому что id isVisible вернет false, если окно было скрытоВо всяком случае, у меня нет окна.Как я могу открыть окно?

Спасибо!

1 Ответ

9 голосов
/ 01 июля 2011

У меня была такая же проблема, когда я не мог получить окно для повторного показа после того, как оно было скрыто от деактивации.В моем случае я показывал NSPanel (подкласс NSWindow) при нажатии NSStatusItem.

Следующий код, наконец, заставил мою NSPanel снова появиться:

[NSApp arrangeInFront:sender];
[myWindow makeKeyAndOrderFront:sender];
[NSApp activateIgnoringOtherApps:YES];

I 'Я уверен, что ключом здесь является «activIgnoringOtherApps».Для меня это не идеально, потому что это отвлекает внимание от текущего приложения пользователя.

...