fixed iconified detection

git-svn-id: http://tint2.googlecode.com/svn/trunk@375 121b4492-b84c-0410-8b4c-0d4edfb3f3cc
This commit is contained in:
thilor77 2010-01-26 23:00:27 +00:00
parent b8eb8a2335
commit 38ea47cc9e
3 changed files with 12 additions and 12 deletions

View file

@ -58,6 +58,7 @@ void server_init_atoms ()
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);

View file

@ -40,6 +40,7 @@ typedef struct Global_atom
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;

View file

@ -146,20 +146,18 @@ int window_get_monitor (Window win)
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;
}