tweakage
This commit is contained in:
63
client.c
63
client.c
@@ -62,9 +62,7 @@ client* window_build_client(Window win)
|
||||
if (XGetWindowAttributes(display, c->window, &c->attr))
|
||||
{
|
||||
c->visible = c->attr.map_state == IsViewable ? 1:0;
|
||||
XGetTransientForHint(display, c->window, &c->transient);
|
||||
if (!GETPROP_ATOM(win, atoms[_NET_WM_WINDOW_TYPE], &c->type, 1)) c->type = 0;
|
||||
if (!GETPROP_WIND(win, atoms[WM_CLIENT_LEADER], &c->leader, 1)) c->leader = None;
|
||||
|
||||
c->manage = !c->attr.override_redirect
|
||||
&& c->type != atoms[_NET_WM_WINDOW_TYPE_DESKTOP]
|
||||
@@ -73,40 +71,43 @@ client* window_build_client(Window win)
|
||||
&& c->type != atoms[_NET_WM_WINDOW_TYPE_SPLASH]
|
||||
? 1:0;
|
||||
|
||||
c->spot = SPOT1; m = &monitors[0];
|
||||
|
||||
for_monitors(i, m)
|
||||
if (INTERSECT(m->x, m->y, m->w, m->h, c->attr.x + c->attr.width/2, c->attr.y+c->attr.height/2, 1, 1))
|
||||
{ c->monitor = i; break; }
|
||||
|
||||
for_spots_rev(i)
|
||||
if (INTERSECT(m->spots[i].x, m->spots[i].y, m->spots[i].w, m->spots[i].h,
|
||||
c->attr.x + c->attr.width/2, c->attr.y+c->attr.height/2, 1, 1))
|
||||
{ c->spot = i; break; }
|
||||
for_monitors(i, m) for_spots(j)
|
||||
if (m->bars[j] && m->bars[j]->window == c->window)
|
||||
{ c->ours = 1; c->manage = 0; break; }
|
||||
|
||||
if (c->manage)
|
||||
for_monitors(i, m) for_spots(j)
|
||||
if (m->bars[j] && m->bars[j]->window == c->window)
|
||||
c->manage = 0;
|
||||
|
||||
if (c->visible)
|
||||
{
|
||||
if (!GETPROP_ATOM(c->window, atoms[_NET_WM_STATE], c->states, ATOMLIST))
|
||||
memset(c->states, 0, sizeof(Atom) * ATOMLIST);
|
||||
c->urgent = client_has_state(c, atoms[_NET_WM_STATE_DEMANDS_ATTENTION]);
|
||||
c->full = client_has_state(c, atoms[_NET_WM_STATE_FULLSCREEN]);
|
||||
c->above = client_has_state(c, atoms[_NET_WM_STATE_ABOVE]);
|
||||
XGetTransientForHint(display, c->window, &c->transient);
|
||||
if (!GETPROP_WIND(win, atoms[WM_CLIENT_LEADER], &c->leader, 1)) c->leader = None;
|
||||
c->spot = SPOT1; m = &monitors[0];
|
||||
|
||||
if ((hints = XGetWMHints(display, c->window)))
|
||||
for_monitors(i, m)
|
||||
if (INTERSECT(m->x, m->y, m->w, m->h, c->attr.x + c->attr.width/2, c->attr.y+c->attr.height/2, 1, 1))
|
||||
{ c->monitor = i; break; }
|
||||
|
||||
for_spots_rev(i)
|
||||
if (INTERSECT(m->spots[i].x, m->spots[i].y, m->spots[i].w, m->spots[i].h, c->attr.x + c->attr.width/2, c->attr.y+c->attr.height/2, 1, 1))
|
||||
{ c->spot = i; break; }
|
||||
|
||||
if (c->visible)
|
||||
{
|
||||
c->input = hints->flags & InputHint && hints->input ? 1:0;
|
||||
c->urgent = c->urgent || hints->flags & XUrgencyHint ? 1:0;
|
||||
XFree(hints);
|
||||
}
|
||||
if (XGetClassHint(display, c->window, &chint))
|
||||
{
|
||||
c->class = strdup(chint.res_class);
|
||||
XFree(chint.res_class); XFree(chint.res_name);
|
||||
if (!GETPROP_ATOM(c->window, atoms[_NET_WM_STATE], c->states, ATOMLIST))
|
||||
memset(c->states, 0, sizeof(Atom) * ATOMLIST);
|
||||
c->urgent = client_has_state(c, atoms[_NET_WM_STATE_DEMANDS_ATTENTION]);
|
||||
c->full = client_has_state(c, atoms[_NET_WM_STATE_FULLSCREEN]);
|
||||
c->above = client_has_state(c, atoms[_NET_WM_STATE_ABOVE]);
|
||||
|
||||
if ((hints = XGetWMHints(display, c->window)))
|
||||
{
|
||||
c->input = hints->flags & InputHint && hints->input ? 1:0;
|
||||
c->urgent = c->urgent || hints->flags & XUrgencyHint ? 1:0;
|
||||
XFree(hints);
|
||||
}
|
||||
if (XGetClassHint(display, c->window, &chint))
|
||||
{
|
||||
c->class = strdup(chint.res_class);
|
||||
XFree(chint.res_class); XFree(chint.res_name);
|
||||
}
|
||||
}
|
||||
}
|
||||
return c;
|
||||
|
||||
Reference in New Issue
Block a user