7
Atom kde_systray_prop = None;
11
kde_systray_prop = XInternAtom(display,
12
"_KDE_NET_SYSTEM_TRAY_WINDOWS", False);
13
assert(kde_systray_prop);
15
XSelectInput(display, root, PropertyChangeMask);
19
void kde_update_icons()
21
gulong count = (unsigned) -1; /* grab as many as possible */
25
gboolean removed = FALSE; /* were any removed? */
27
if (! xprop_get32(root, kde_systray_prop, XA_WINDOW, sizeof(Window)*8,
31
/* add new windows to our list */
32
for (i = 0; i < count; ++i) {
33
for (it = icons; it != NULL; it = g_slist_next(it)) {
34
TrayWindow *traywin = it->data;
35
if (traywin->id == ids[i])
39
icon_add(ids[i], KDE);
42
/* remove windows from our list that no longer exist in the property */
43
for (it = icons; it != NULL;) {
44
TrayWindow *traywin = it->data;
47
if (traywin->type != KDE) {
48
/* don't go removing non-kde windows */
52
for (i = 0; i < count; ++i) {
53
if (traywin->id == ids[i]) {
60
next = g_slist_next(it);
69
/* at least one tray app was removed, so reorganize 'em all and resize*/