all repos — tint2 @ 38ea47cc9ea034d30bce713f0bbb8d466f151108

fork of the tint2 desktop panel for my custom setup - only minimized windows across all desktops for the taskbar

fixed iconified detection

git-svn-id: http://tint2.googlecode.com/svn/trunk@375 121b4492-b84c-0410-8b4c-0d4edfb3f3cc
thilor77 thilor77@121b4492-b84c-0410-8b4c-0d4edfb3f3cc
commit

38ea47cc9ea034d30bce713f0bbb8d466f151108

parent

b8eb8a233568b9f342a91724c6911f926cf75baa

3 files changed, 12 insertions(+), 12 deletions(-)

jump to
M src/server.csrc/server.c

@@ -58,6 +58,7 @@ server.atom._NET_WM_STATE = XInternAtom (server.dsp, "_NET_WM_STATE", False);

server.atom._NET_WM_STATE_MAXIMIZED_VERT = XInternAtom (server.dsp, "_NET_WM_STATE_MAXIMIZED_VERT", False); server.atom._NET_WM_STATE_MAXIMIZED_HORZ = XInternAtom (server.dsp, "_NET_WM_STATE_MAXIMIZED_HORZ", False); server.atom._NET_WM_STATE_SHADED = XInternAtom (server.dsp, "_NET_WM_STATE_SHADED", False); + server.atom._NET_WM_STATE_HIDDEN = XInternAtom (server.dsp, "_NET_WM_STATE_HIDDEN", False); server.atom._NET_WM_STATE_BELOW = XInternAtom (server.dsp, "_NET_WM_STATE_BELOW", False); server.atom._NET_WM_STATE_ABOVE = XInternAtom (server.dsp, "_NET_WM_STATE_ABOVE", False); server.atom._NET_WM_STATE_MODAL = XInternAtom (server.dsp, "_NET_WM_STATE_MODAL", False);
M src/server.hsrc/server.h

@@ -40,6 +40,7 @@ Atom _NET_WM_STATE;

Atom _NET_WM_STATE_MAXIMIZED_VERT; Atom _NET_WM_STATE_MAXIMIZED_HORZ; Atom _NET_WM_STATE_SHADED; + Atom _NET_WM_STATE_HIDDEN; Atom _NET_WM_STATE_BELOW; Atom _NET_WM_STATE_ABOVE; Atom _NET_WM_STATE_MODAL;
M src/util/window.csrc/util/window.c

@@ -146,20 +146,18 @@

int window_is_iconified (Window win) { - if (IconicState == get_property32(win, server.atom.WM_STATE, server.atom.WM_STATE)) { - // openbox sets on shaded windows the IconicState, however we do not consider these windows iconified - Atom *at; - int count, i; - at = server_get_property (win, server.atom._NET_WM_STATE, XA_ATOM, &count); - for (i = 0; i < count; i++) { - if (at[i] == server.atom._NET_WM_STATE_SHADED) { - XFree(at); - return 0; - } + // EWMH specification : minimization of windows use _NET_WM_STATE_HIDDEN. + // WM_STATE is not accurate for shaded window and in multi_desktop mode. + Atom *at; + int count, i; + at = server_get_property (win, server.atom._NET_WM_STATE, XA_ATOM, &count); + for (i = 0; i < count; i++) { + if (at[i] == server.atom._NET_WM_STATE_HIDDEN) { + XFree(at); + return 1; } - XFree(at); - return 1; } + XFree(at); return 0; }