]> Dogcows Code - chaz/tint2/blobdiff - src/util/window.c
*fix* issue 272
[chaz/tint2] / src / util / window.c
index 285d525d8e15edbddf23964978ddbd724cafd4a7..dc38d24f3ef84c0e46f59070243c78cfbf3dd2f5 100644 (file)
@@ -86,9 +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_tasks(window) ) {
+               // do not add transient_for windows if the transient window is already in the taskbar
+               window=win;
+               while ( XGetTransientForHint(server.dsp, window, &window) ) {
+                       if ( task_get_tasks(window) ) {
                                XFree(at);
                                return 1;
                        }
@@ -146,20 +147,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;
 }
 
This page took 0.022657 seconds and 4 git commands to generate.