Ich versuche, eine xlib Traybar für X11 zu machen, wo es die Tray-Icons mit XEMBED wie in der tray specs beschrieben bettet. Wenn ich jedoch die Anwendung mit dem Taskleistensymbol schließe, wird sie nur aus dem Containerfenster entfernt, aber das Rechteck des schwarzen Containerfensters und der Eintrag in meinem Code sind noch vorhanden.überprüfen für reparierte Fenster schließen Ereignisse
Im XEMBED documentation sagt es
Es ist die Verantwortung des Einbettungs ist die Übersicht über alle weitergeleitet Beschleuniger zu halten und sie zu entfernen, wenn das Client-Fenster stirbt.
Allerdings erhält meine Anwendung keine Ereignisse oder Hinweise, wenn ein eingebettetes Fenster stirbt.
Ich bekomme im Grunde nur ein Dock-Anfrage-Ereignis und nichts anderes danach. Wenn ein Dock Anforderungsereignis kommt in mir ein Kind Fenster für mein Panel erstellen, die das Fach Fenster enthält und es so Reparent:
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);
es auf die Platte ohne Probleme funktionieren Hinzufügen, aber ich weiß nicht, wie man Überprüfen Sie, wann es wieder entfernt werden soll.
Wie kann ich meine Anwendung schließen Ereignisse für diese Tray-Symbole erhalten oder wie überprüfe ich, ob das reparierte Fenster noch existiert?