我正在製作一個跨平臺的窗口層。在製作窗口關係時,我在窗口模式上遇到了一些麻煩。_NET_WM_STATE_MODAL的預期行爲是什麼?
我已閱讀官方規格:Application Window Properties,以及一些相關的主題如:X11 modal dialog。似乎僅僅設置transient-for是不夠的,但是_NET_WM_STATE_MODAL也是必需的。所以我試圖製作適用於這個屬性以及transient-for的小程序。
我首先製作了使用SDL2創建窗口的程序,並使用X11提供的本地窗口句柄來創建窗口。但在設置_NET_WM_STATE_MODAL屬性後,我沒有觀察到任何行爲改變:transient-for目標窗口仍在接收鼠標按鈕事件,這不像用戶無法操作的模式阻止父窗口。
爲了避免由SDL2完成的潛在的惡意工作,我進一步使用GDK3提供了測試程序,它提供了隨時可用的包裝函數。行爲與SDL2程序相同。
由於我沒有在設置_NET_WM_STATE_MODAL之前/之後觀察到任何變化,該屬性的預期行爲是什麼?
儘管它是WM特有的,那麼對該屬性是否有任何「共同」期望? – jiandingzhe
@jiandingzhe來自EWMH規範:「在用戶可以繼續在主窗口中工作之前,必須關閉其他對話框,該屬性稱爲模態。」 –
因此,如果這個功能不能保證存在,我應該始終在我的窗口層中實現它嗎? – jiandingzhe