X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=src%2Futil%2Fwindow.c;h=f4ef6a04ac306277e46d6561a7cda780c150ef02;hb=490afac2d1475afe16bcc67e57123dd8ff25ccd8;hp=1aa08774e28f9f93369f5a49b3bdd87f53d4c0f7;hpb=5449d421272dda86d1d01ad0e1a5c1cc0b840322;p=chaz%2Ftint2 diff --git a/src/util/window.c b/src/util/window.c index 1aa0877..f4ef6a0 100644 --- a/src/util/window.c +++ b/src/util/window.c @@ -86,12 +86,10 @@ int window_is_hidden (Window win) XFree(at); return 1; } - if (at[i] == server.atom._NET_WM_STATE_MODAL) { - // do not add modal windows if the transient window is already in the taskbar - if ( XGetTransientForHint(server.dsp, win, &window) && task_get_task(window) ) { - XFree(at); - return 1; - } + // do not add transient_for windows if the transient window is already in the taskbar + if ( XGetTransientForHint(server.dsp, win, &window) && task_get_tasks(window) ) { + XFree(at); + return 1; } } XFree(at); @@ -146,7 +144,19 @@ int window_get_monitor (Window win) int window_is_iconified (Window win) { - return (IconicState == get_property32(win, server.atom.WM_STATE, server.atom.WM_STATE)); + // 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 0; }