aboutsummaryrefslogtreecommitdiff
path: root/dwm/dwm.c
diff options
context:
space:
mode:
Diffstat (limited to 'dwm/dwm.c')
-rw-r--r--dwm/dwm.c25
1 files changed, 12 insertions, 13 deletions
diff --git a/dwm/dwm.c b/dwm/dwm.c
index a10de14..60274dc 100644
--- a/dwm/dwm.c
+++ b/dwm/dwm.c
@@ -556,7 +556,7 @@ cleanup(void)
for (i = 0; i < CurLast; i++)
drw_cur_free(drw, cursor[i]);
for (i = 0; i < LENGTH(colors); i++)
- free(scheme[i]);
+ drw_scm_free(drw, scheme[i], 3);
free(scheme);
XDestroyWindow(dpy, wmcheckwin);
drw_free(drw);
@@ -949,14 +949,15 @@ focusstack(const Arg *arg)
Atom
getatomprop(Client *c, Atom prop)
{
- int di;
- unsigned long dl;
+ int format;
+ unsigned long nitems, dl;
unsigned char *p = NULL;
Atom da, atom = None;
if (XGetWindowProperty(dpy, c->win, prop, 0L, sizeof atom, False, XA_ATOM,
- &da, &di, &dl, &dl, &p) == Success && p) {
- atom = *(Atom *)p;
+ &da, &format, &nitems, &dl, &p) == Success && p) {
+ if (nitems > 0 && format == 32)
+ atom = *(long *)p;
XFree(p);
}
return atom;
@@ -982,10 +983,10 @@ getstate(Window w)
Atom real;
if (XGetWindowProperty(dpy, w, wmatom[WMState], 0L, 2L, False, wmatom[WMState],
- &real, &format, &n, &extra, (unsigned char **)&p) != Success)
+ &real, &format, &n, &extra, &p) != Success)
return -1;
- if (n != 0)
- result = *p;
+ if (n != 0 && format == 32)
+ result = *(long *)p;
XFree(p);
return result;
}
@@ -1581,12 +1582,10 @@ sendevent(Client *c, Atom proto)
void
setfocus(Client *c)
{
- if (!c->neverfocus) {
+ if (!c->neverfocus)
XSetInputFocus(dpy, c->win, RevertToPointerRoot, CurrentTime);
- XChangeProperty(dpy, root, netatom[NetActiveWindow],
- XA_WINDOW, 32, PropModeReplace,
- (unsigned char *) &(c->win), 1);
- }
+ XChangeProperty(dpy, root, netatom[NetActiveWindow], XA_WINDOW, 32,
+ PropModeReplace, (unsigned char *) &(c->win), 1);
sendevent(c, wmatom[WMTakeFocus]);
}