2014-03-27 32 views
0

請考慮以下情形。我有一個有兩個窗口的應用程序:關閉NSWindow而不激活以下窗口

  1. 包含所有應用程序功能的主窗口;
  2. 和一個輔助窗口,可以使用全局快捷方式或通過點擊應用程序的狀態欄圖標來調用。它看起來像這樣:enter image description here 這是一個簡單的窗口,可以快速將數據添加到應用程序,而無需啓動主窗口 - 可能會更改空間並中斷用戶的工作流程。

    窗口浮高於一切(這是在NSModalPanelWindowLevel),並可以加入所有空格(NSWindowCollectionBehaviorCanJoinAllSpaces

這裏的問題:當下令快速添加窗口出(X按鈕或按Esc鍵是按下),主窗口被製作成鍵並被命令前置(假設它在當前空間的窗口列表中的某處)。

這不是我想要的行爲。通常情況下,當應用程序的窗口關閉時,是的,您希望應用程序的窗口被激活,但不在這裏 - 這是一個「幫助程序」窗口,應該獨立於應用程序本身或多或少地工作。當我在Safari並調用快速添加窗口時,我只想添加一些數據,單擊Return,並且我希望它消失 - 我希望前一個窗口(Safari)是關鍵頂部,而不是我的應用程序的主窗口(除非我的應用程序的主窗口在調用快速添加之前是關鍵的)。

那麼,如何在不激活下面的窗口的情況下關閉NSWindow?

我無法弄清楚這一點。我唯一的想法是,也許你可以做一個幫助應用程序來顯示這個輔助窗口 - 但這聽起來像的工作(在進程之間來回發送數據,所有這些......)。必須有一個更簡單的方法!

回答

4

我不認爲這可以(有用)與NSWindow完成。
this answer一樣,我會建議您嘗試使用NSPanel,風格NSNonactivatingPanelMask而不是創建NSWindow

+0

呃,我現在覺得很蠢!不知道我是如何錯過它的。 – radex

+0

(對不起,以前沒有把你的答案標記爲正確,這是不對的。) – radex