]> Dogcows Code - chaz/tint2/commitdiff
fixed iconified detection
authorThierry Lorthiois <lorthiois@bbsoft.fr>
Tue, 26 Jan 2010 23:00:27 +0000 (23:00 +0000)
committerThierry Lorthiois <lorthiois@bbsoft.fr>
Tue, 26 Jan 2010 23:00:27 +0000 (23:00 +0000)
src/server.c
src/server.h
src/util/window.c

index 18000f21234da4cd4df381cda56930d0ab7cb594..0f6b083f128d679d62dbe67c5aeb73a1fd5d7d5f 100644 (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);
index 3da2f04ef1ea424ae678000f6f7216ef25c29e1d..517cd843baf791d0abbebec48081bedf8f511b19 100644 (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;
index 285d525d8e15edbddf23964978ddbd724cafd4a7..06ab09359054e334aaedd5b100482a4e7d0072b0 100644 (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;
 }
 
This page took 0.028157 seconds and 4 git commands to generate.