int shadow_height;
unsigned int opacity;
wintype windowType;
+ Bool iconic;
unsigned long damage_sequence; /* sequence when damage was created */
Bool need_configure;
Atom opacityAtom;
Atom winTypeAtom;
Atom winType[NUM_WINTYPES];
+Atom stateAtom;
+Atom stateHiddenAtom;
+
double winTypeOpacity[NUM_WINTYPES];
Bool winTypeShadow[NUM_WINTYPES];
Bool winTypeFade[NUM_WINTYPES];
return t;
}
+static Bool
+get_iconic_prop(Display * dpy, Window w)
+{
+ Atom actual;
+ int format;
+ unsigned long n, left, off;
+ unsigned char *data;
+ Bool ret = False;
+
+ off = 0;
+
+ do {
+ int result = XGetWindowProperty (dpy, w, stateAtom, off, 1L, False,
+ XA_ATOM, &actual, &format,
+ &n, &left, &data);
+
+ if (result == Success && data != None)
+ {
+ Atom a;
+ memcpy (&a, data, sizeof (Atom));
+ if (a == stateHiddenAtom) {
+ ret = True;
+ break;
+ }
+
+ XFree ( (void *) data);
+ }
+
+ ++off;
+ } while (left >= 4 && !ret);
+
+ return ret;
+}
+
static wintype
get_wintype_prop(Display * dpy, Window w)
{
return;
w->a.map_state = IsViewable;
+ w->iconic = False;
w->windowType = determine_wintype (dpy, w->id, w->id);
#if 0
winType[WINTYPE_NOTIFY] = XInternAtom (dpy, "_NET_WM_WINDOW_TYPE_NOTIFICATION", False);
winType[WINTYPE_COMBO] = XInternAtom (dpy, "_NET_WM_WINDOW_TYPE_COMBO", False);
winType[WINTYPE_DND] = XInternAtom (dpy, "_NET_WM_WINDOW_TYPE_DND", False);
+ stateAtom = XInternAtom (dpy, "_NET_WM_STATE", False);
+ stateHiddenAtom = XInternAtom (dpy, "_NET_WM_STATE_HIDDEN", False);
pa.subwindow_mode = IncludeInferiors;
}
}
}
+ if (ev.property.atom == stateAtom) {
+ win *w = find_win (dpy, ev.xproperty.window);
+ if (w)
+ {
+ if (w->a.map_state != IsUnmapped)
+ w->iconic = get_iconic_prop (dpy, w->id);
+ }
+ }
break;
default:
if (ev.type == damage_event + XDamageNotify)