static GC dockapp_border1GC, dockapp_border2GC, window_border1GC, window_border2GC, active_desktopGC, inactive_desktopGC, active_windowGC, inactive_windowGC;
static Atom supported_atom, num_desktops_atom, desktop_geometry_atom, current_desktop_atom, client_list_atom, client_desktop_atom, client_state_atom, active_window_atom, moveresize_window_atom;
static Atom above_state, below_state, shaded_state, skip_pager_state, hidden_state;
-static long desktop = -1;
+static int desktop = -1;
static Window drag_window;
static int drag_x, drag_y;
static int drag_button;
/* Check the window is on our desktop (or all desktops). */
client_desktop = get_atom_long(client_desktop_atom, XA_CARDINAL, data[i]);
- if (client_desktop != desktop && client_desktop != -1) continue;
+ if (desktop > -1) {
+ if (client_desktop != desktop && client_desktop != -1) continue;
+ }
+ else {
+ if (client_desktop != *active_desktop && client_desktop != -1) continue;
+ }
/* Try to get its dimensions. */
if (! XGetGeometry(DADisplay, data[i], &root, &x, &y, &width, &height, &border, &depth)) continue;
enumerate_clients(&clients, &num_clients, &active_desktop, &active_window);
pixmap = XCreatePixmap(DADisplay, DAWindow, dockapp_width, dockapp_height, dockapp_depth);
- if (active_desktop == desktop) gc = active_desktopGC;
+ if (active_desktop == desktop || desktop < 0) gc = active_desktopGC;
else gc = inactive_desktopGC;
draw_relief(pixmap, dockapp_width, dockapp_height, gc);
check_support();
num_desktops = get_atom_long(num_desktops_atom, XA_CARDINAL, DefaultRootWindow(DADisplay));
- if (desktop < 1) {
+ if (desktop == 0) {
desktop = get_atom_long(current_desktop_atom, XA_CARDINAL, DefaultRootWindow(DADisplay));
}
+ else if (desktop < 0) desktop = -1;
else if (desktop-- > num_desktops) {
fprintf(stderr, "There are only %ld desktops!\n", num_desktops);
exit(111);