diff --git a/src/util/window.c b/src/util/window.c index d44ec0a..97452fd 100644 --- a/src/util/window.c +++ b/src/util/window.c @@ -108,13 +108,17 @@ gboolean window_is_hidden(Window win) int get_window_desktop(Window win) { - if (!server.viewports) - return MAX(0, MIN(server.num_desktops - 1, get_property32(win, server.atom._NET_WM_DESKTOP, XA_CARDINAL))); + if (!server.viewports) { + int desktop = get_property32(win, server.atom._NET_WM_DESKTOP, XA_CARDINAL); + if (desktop != ALL_DESKTOPS) + desktop = MAX(0, MIN(server.num_desktops - 1, desktop)); + return desktop; + } int x, y, w, h; get_window_coordinates(win, &x, &y, &w, &h); - int desktop = MIN(get_current_desktop(), server.num_desktops - 1); + int desktop = get_current_desktop(); // Window coordinates are relative to the current viewport, make them absolute x += server.viewports[desktop].x; y += server.viewports[desktop].y;