simplify is_client_tagged() proto

This commit is contained in:
Julien Danjou 2007-12-27 23:05:34 +01:00
parent e95dc4b4cd
commit 48d9ea047f
5 changed files with 23 additions and 26 deletions

View File

@ -350,7 +350,7 @@ client_manage(Window w, XWindowAttributes *wa, int screen)
if((rettrans = XGetTransientForHint(c->display, w, &trans) == Success) if((rettrans = XGetTransientForHint(c->display, w, &trans) == Success)
&& (t = get_client_bywin(globalconf.clients, trans))) && (t = get_client_bywin(globalconf.clients, trans)))
for(tag = globalconf.screens[c->screen].tags; tag; tag = tag->next) for(tag = globalconf.screens[c->screen].tags; tag; tag = tag->next)
if(is_client_tagged(t, tag, c->screen)) if(is_client_tagged(t, tag))
tag_client(c, tag); tag_client(c, tag);
/* should be floating if transsient or fixed) */ /* should be floating if transsient or fixed) */
@ -481,7 +481,7 @@ client_saveprops(Client * c, int screen)
prop = p_new(char, ntags + 2); prop = p_new(char, ntags + 2);
for(tag = globalconf.screens[screen].tags; tag; tag = tag->next, i++) for(tag = globalconf.screens[screen].tags; tag; tag = tag->next, i++)
prop[i] = is_client_tagged(c, tag, screen) ? '1' : '0'; prop[i] = is_client_tagged(c, tag) ? '1' : '0';
if(i <= ntags) if(i <= ntags)
prop[i] = c->isfloating ? '1' : '0'; prop[i] = c->isfloating ? '1' : '0';
@ -616,7 +616,7 @@ client_isvisible(Client *c, int screen)
return False; return False;
for(tag = globalconf.screens[screen].tags; tag; tag = tag->next) for(tag = globalconf.screens[screen].tags; tag; tag = tag->next)
if(tag->selected && is_client_tagged(c, tag, screen)) if(tag->selected && is_client_tagged(c, tag))
return True; return True;
return False; return False;
} }

10
focus.c
View File

@ -95,13 +95,13 @@ focus_delete_client(Client *c)
} }
static Client * static Client *
focus_get_latest_client_for_tags(int screen, Tag **t) focus_get_latest_client_for_tags(Tag **t)
{ {
FocusList *fl; FocusList *fl;
for(fl = globalconf.focus; fl; fl = fl->prev) for(fl = globalconf.focus; fl; fl = fl->prev)
for(; *t; t++) for(; *t; t++)
if(is_client_tagged(fl->client, *t, screen)) if(is_client_tagged(fl->client, *t))
return fl->client; return fl->client;
return NULL; return NULL;
@ -111,7 +111,7 @@ Client *
focus_get_current_client(int screen) focus_get_current_client(int screen)
{ {
Tag **curtags = get_current_tags(screen); Tag **curtags = get_current_tags(screen);
Client *sel = focus_get_latest_client_for_tags(screen, curtags); Client *sel = focus_get_latest_client_for_tags(curtags);
p_delete(&curtags); p_delete(&curtags);
return sel; return sel;
@ -138,7 +138,7 @@ uicb_focus_history(int screen, char *arg)
curtags = get_current_tags(screen); curtags = get_current_tags(screen);
for(; fl && i < 0; fl = fl->prev) for(; fl && i < 0; fl = fl->prev)
for(tag = curtags; *tag; tag++) for(tag = curtags; *tag; tag++)
if(is_client_tagged(fl->client, *tag, screen)) if(is_client_tagged(fl->client, *tag))
i++; i++;
p_delete(&curtags); p_delete(&curtags);
if(fl) if(fl)
@ -158,7 +158,7 @@ uicb_focus_client_byname(int screen, char *arg)
curtags = get_current_tags(screen); curtags = get_current_tags(screen);
if((c = get_client_byname(globalconf.clients, arg))) if((c = get_client_byname(globalconf.clients, arg)))
for(tag = curtags; *tag; tag++) for(tag = curtags; *tag; tag++)
if(is_client_tagged(c, *tag, screen)) if(is_client_tagged(c, *tag))
focus(c, True, screen); focus(c, True, screen);
p_delete(&curtags); p_delete(&curtags);
} }

14
tag.c
View File

@ -53,7 +53,7 @@ tag_client(Client *c, Tag *t)
TagClientLink *tc, *new_tc; TagClientLink *tc, *new_tc;
/* don't tag twice */ /* don't tag twice */
if(is_client_tagged(c, t, c->screen)) if(is_client_tagged(c, t))
return; return;
new_tc = p_new(TagClientLink, 1); new_tc = p_new(TagClientLink, 1);
@ -81,14 +81,14 @@ untag_client(Client *c, Tag *t)
} }
Bool Bool
is_client_tagged(Client *c, Tag *t, int screen) is_client_tagged(Client *c, Tag *t)
{ {
TagClientLink *tc; TagClientLink *tc;
if(!c || c->screen != screen) if(!c)
return False; return False;
for(tc = globalconf.screens[screen].tclink; tc; tc = tc->next) for(tc = globalconf.screens[c->screen].tclink; tc; tc = tc->next)
if(tc->client == c && tc->tag == t) if(tc->client == c && tc->tag == t)
return True; return True;
return False; return False;
@ -242,7 +242,7 @@ uicb_client_toggletag(int screen, char *arg)
target_tag = target_tag->next, i--); target_tag = target_tag->next, i--);
if(target_tag) if(target_tag)
{ {
if(is_client_tagged(sel, target_tag, screen)) if(is_client_tagged(sel, target_tag))
untag_client(sel, target_tag); untag_client(sel, target_tag);
else else
tag_client(sel, target_tag); tag_client(sel, target_tag);
@ -250,14 +250,14 @@ uicb_client_toggletag(int screen, char *arg)
/* check that there's at least one tag selected for this client*/ /* check that there's at least one tag selected for this client*/
for(tag = globalconf.screens[screen].tags; tag for(tag = globalconf.screens[screen].tags; tag
&& !is_client_tagged(sel, tag, screen); tag = tag->next) && !is_client_tagged(sel, tag); tag = tag->next)
if(!tag) if(!tag)
tag_client(sel, target_tag); tag_client(sel, target_tag);
} }
else else
for(tag = globalconf.screens[screen].tags; tag; tag = tag->next) for(tag = globalconf.screens[screen].tags; tag; tag = tag->next)
if(is_client_tagged(sel, tag, screen)) if(is_client_tagged(sel, tag))
tag_client(sel, tag); tag_client(sel, tag);
else else
untag_client(sel, tag); untag_client(sel, tag);

2
tag.h
View File

@ -30,7 +30,7 @@
Tag ** get_current_tags(int ); Tag ** get_current_tags(int );
void tag_client(Client *, Tag *); void tag_client(Client *, Tag *);
void untag_client(Client *, Tag *); void untag_client(Client *, Tag *);
Bool is_client_tagged(Client *, Tag *, int); Bool is_client_tagged(Client *, Tag *);
void tag_client_with_current_selected(Client *); void tag_client_with_current_selected(Client *);
void tag_client_with_rules(Client *); void tag_client_with_rules(Client *);

View File

@ -35,23 +35,23 @@ extern AwesomeConf globalconf;
* \return True or False * \return True or False
*/ */
static Bool static Bool
isoccupied(int screen, Tag *t) isoccupied(Tag *t)
{ {
Client *c; Client *c;
for(c = globalconf.clients; c; c = c->next) for(c = globalconf.clients; c; c = c->next)
if(is_client_tagged(c, t, screen)) if(is_client_tagged(c, t))
return True; return True;
return False; return False;
} }
static Bool static Bool
isurgent(int screen, Tag *t) isurgent(Tag *t)
{ {
Client *c; Client *c;
for(c = globalconf.clients; c; c = c->next) for(c = globalconf.clients; c; c = c->next)
if(is_client_tagged(c, t, screen) && c->isurgent) if(is_client_tagged(c, t) && c->isurgent)
return True; return True;
return False; return False;
@ -85,7 +85,7 @@ taglist_draw(Widget *widget,
w = textwidth(vscreen.font, tag->name); w = textwidth(vscreen.font, tag->name);
if(tag->selected) if(tag->selected)
colors = vscreen.colors_selected; colors = vscreen.colors_selected;
else if(isurgent(widget->statusbar->screen, tag)) else if(isurgent(tag))
colors = vscreen.colors_urgent; colors = vscreen.colors_urgent;
else else
colors = vscreen.colors_normal; colors = vscreen.colors_normal;
@ -95,12 +95,9 @@ taglist_draw(Widget *widget,
tag->name, tag->name,
colors[ColFG], colors[ColFG],
colors[ColBG]); colors[ColBG]);
if(isoccupied(widget->statusbar->screen, tag)) if(isoccupied(tag))
draw_rectangle(ctx, widget->location + widget->width, 0, flagsize, flagsize, draw_rectangle(ctx, widget->location + widget->width, 0, flagsize, flagsize,
sel && is_client_tagged(sel, sel && is_client_tagged(sel, tag), colors[ColFG]);
tag,
widget->statusbar->screen),
colors[ColFG]);
widget->width += w; widget->width += w;
} }
return widget->width; return widget->width;