我正在嘗試爲X11製作一個xlib托盤欄,它使用XEMBED嵌入托盤圖標,如tray specs中所述。但是,當我用托盤圖標關閉應用程序時,它只是將它從容器窗口中移除,但黑色容器窗口矩形和我的代碼中的條目仍然存在。檢查重新關閉的窗口關閉事件
它是嵌入有責任讓所有轉發 加速器的軌道,當客戶端窗口模具將其刪除。
但是,當嵌入式窗口死亡時,我的應用程序沒有得到任何事件或指示。
我基本上只會收到一個碼頭請求事件,其他事情都沒有。當碼頭請求事件進來我創造了我的面板子窗口包含托盤窗口,重新設置父級是這樣的:
enum trayIconSize = 24; // dimensions of icon
icon.trayWindow = XCreateWindow(x.display, panel.window, 0, 0, ...);
icon.ownerHandle = event.data.l[2]; // window id of icon which wants to dock
XReparentWindow(x.display, icon.ownerHandle, icon.trayWindow, 0, 0);
XMoveResizeWindow(x.display, icon.ownerHandle, 0, 0, trayIconSize, trayIconSize);
它添加到面板廠,沒有任何問題,但我不知道該怎麼檢查何時再次移除它。
如何讓我的應用程序接收關閉這些托盤圖標的事件,或者如何檢查重新設置的窗口是否仍然存在?