Я пытаюсь создать подставку xlib для X11, где она вставляет значки в лоток с помощью XEMBED, как описано в tray specs. Однако, когда я закрываю приложение с помощью значка в трее, он просто удаляет его из окна контейнера, но черный прямоугольник контейнера контейнера и запись в моем коде все еще существуют.check for reparented window close events
В XEMBED documentation он говорит
Это ответственность для внедрения, чтобы следить за всеми пересылаемых ускорителей и удалить их, когда умирает окно клиента.
Однако мое приложение не получает никаких событий или признаков, когда встроенное окно умирает.
В основном я получаю только сообщение о необходимости док-станции и ничего больше после этого. Когда событие запроса док приходит создать дочернее окно для моей панели, которая содержит окно лотка и его, как изменит родителя так:
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);
Добавление к панели работает без каких-либо проблем, но я не знаю, как проверьте, когда его снова удалить.
Как заставить приложение получать события закрытия для этих значков в трее или как проверить, сохранилось ли повторное окно?