tray specsで説明されているように、XEMBEDを使用してトレイアイコンを埋め込むX11用のxlibトレイバーを作成しようとしています。しかし、トレイアイコンを使用してアプリケーションを閉じると、コンテナウィンドウからは削除されますが、黒いコンテナウィンドウの四角形とコード内のエントリはまだ存在します。 XEMBED documentationで改ざんされたウィンドウクローズイベントを確認する
それはすべての転送 アクセラレータを追跡するために、クライアントウィンドウが死んだときにそれらを削除するには埋め込みの責任である
言います。
ただし、埋め込みウィンドウが消滅しても、私のアプリケーションはイベントや表示を取得しません。
私は基本的にドック要求イベントのみを受信し、その後は何も受信しません。ドック要求イベントは、Iになると、トレイのウィンドウが含まれており、このようにそれをリペアレント私のパネルの子ウィンドウを作成します。パネルに追加
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);
は何の問題もなく動作しますが、私はどのように知りませんもう一度削除するかどうかを確認してください。
私のアプリケーションにトレイアイコンのクローズイベントを受信させるにはどうすればよいのですか?または、親ウィンドウがまだ存在するかどうかを確認する方法を教えてください。