|
|
|
@ -62,25 +62,6 @@ scan()
|
|
|
|
|
XFree(wins);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static int
|
|
|
|
|
winprop(Window w, Atom a, Atom t, long l, unsigned char **prop)
|
|
|
|
|
{
|
|
|
|
|
int status, format;
|
|
|
|
|
unsigned long res, extra;
|
|
|
|
|
Atom real;
|
|
|
|
|
|
|
|
|
|
status = XGetWindowProperty(dpy, w, a, 0L, l, False, t, &real, &format,
|
|
|
|
|
&res, &extra, prop);
|
|
|
|
|
|
|
|
|
|
if(status != Success || *prop == 0) {
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
if(res == 0) {
|
|
|
|
|
free((void *) *prop);
|
|
|
|
|
}
|
|
|
|
|
return res;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Startup Error handler to check if another window manager
|
|
|
|
|
* is already running.
|
|
|
|
@ -111,21 +92,20 @@ Window root, barwin;
|
|
|
|
|
int
|
|
|
|
|
getproto(Window w)
|
|
|
|
|
{
|
|
|
|
|
int protos = 0;
|
|
|
|
|
int status, format, protos = 0;
|
|
|
|
|
int i;
|
|
|
|
|
long res;
|
|
|
|
|
Atom *protocols;
|
|
|
|
|
unsigned long extra, res;
|
|
|
|
|
Atom *protocols, real;
|
|
|
|
|
|
|
|
|
|
res = winprop(w, wmatom[WMProtocols], XA_ATOM, 20L,
|
|
|
|
|
((unsigned char **)&protocols));
|
|
|
|
|
if(res <= 0) {
|
|
|
|
|
status = XGetWindowProperty(dpy, w, wmatom[WMProtocols], 0L, 20L,
|
|
|
|
|
False, XA_ATOM, &real, &format, &res, &extra, (unsigned char **)&protocols);
|
|
|
|
|
if(status != Success || protocols == 0)
|
|
|
|
|
return protos;
|
|
|
|
|
}
|
|
|
|
|
for(i = 0; i < res; i++) {
|
|
|
|
|
if(protocols[i] == wmatom[WMDelete])
|
|
|
|
|
protos |= PROTODELWIN;
|
|
|
|
|
}
|
|
|
|
|
free((char *) protocols);
|
|
|
|
|
free(protocols);
|
|
|
|
|
return protos;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|