panel: Watch the panel`s WM_DESKTOP property and reset it if it changes

This commit is contained in:
o9000
2016-03-24 19:36:55 +01:00
parent 5f82ef4d3b
commit d398795202
3 changed files with 14 additions and 9 deletions

View File

@@ -108,17 +108,16 @@ gboolean window_is_hidden(Window win)
int get_window_desktop(Window win)
{
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));
int desktop = get_property32(win, server.atom._NET_WM_DESKTOP, XA_CARDINAL);
if (desktop == ALL_DESKTOPS)
return desktop;
}
if (!server.viewports)
return CLAMP(desktop, 0, server.num_desktops - 1);
int x, y, w, h;
get_window_coordinates(win, &x, &y, &w, &h);
int desktop = get_current_desktop();
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;