//Check if we initialise else retrieve changed property
if (atom == 0) {
- atom_current = XInternAtom(display, "_NET_CURRENT_DESKTOP", True);
- atom_number = XInternAtom(display, "_NET_NUMBER_OF_DESKTOPS", True);
- atom_names = XInternAtom(display, "_NET_DESKTOP_NAMES", True);
- get_x11_desktop_current(display, root, atom_current);
- get_x11_desktop_number(display, root, atom_number);
- get_x11_desktop_names(display, root, atom_names);
+ atom_current = XInternAtom(current_display, "_NET_CURRENT_DESKTOP", True);
+ atom_number = XInternAtom(current_display, "_NET_NUMBER_OF_DESKTOPS", True);
+ atom_names = XInternAtom(current_display, "_NET_DESKTOP_NAMES", True);
+ get_x11_desktop_current(current_display, root, atom_current);
+ get_x11_desktop_number(current_display, root, atom_number);
+ get_x11_desktop_names(current_display, root, atom_names);
get_x11_desktop_current_name(current_info->x11.desktop.all_names);
+
+ //Set the PropertyChangeMask on the root window, if not set
+ XWindowAttributes window_attributes;
+ XGetWindowAttributes(display, root, &window_attributes);
+ if (!(window_attributes.your_event_mask & PropertyChangeMask)) {
+ XSetWindowAttributes attributes;
+ attributes.event_mask = window_attributes.your_event_mask | PropertyChangeMask;
+ XChangeWindowAttributes(display, root, CWEventMask, &attributes);
+ XGetWindowAttributes(display, root, &window_attributes);
+ }
} else {
if (atom == atom_current) {
- get_x11_desktop_current(display, root, atom_current);
+ get_x11_desktop_current(current_display, root, atom_current);
get_x11_desktop_current_name(current_info->x11.desktop.all_names);
} else if (atom == atom_number) {
- get_x11_desktop_number(display, root, atom_number);
+ get_x11_desktop_number(current_display, root, atom_number);
} else if (atom == atom_names) {
- get_x11_desktop_names(display, root, atom_names);
+ get_x11_desktop_names(current_display, root, atom_names);
get_x11_desktop_current_name(current_info->x11.desktop.all_names);
}
}