Update tag colors
This kind of incurs a lot of writes usually for no reason. The only place this matters is when cold-opening a /query. I wonder if there's a better way to do that.weechat-hashes
parent
6b97c59756
commit
d85c1c3f96
8
tag.c
8
tag.c
|
@ -45,11 +45,15 @@ struct Tag tagFind(const char *name) {
|
|||
|
||||
struct Tag tagFor(const char *name, enum IRCColor color) {
|
||||
struct Tag tag = tagFind(name);
|
||||
if (tag.id != TagNone.id) return tag;
|
||||
if (tag.id != TagNone.id) {
|
||||
tag.color = tags.color[tag.id] = color;
|
||||
return tag;
|
||||
}
|
||||
if (tags.len == TagsLen) return TagStatus;
|
||||
|
||||
size_t id = tags.len++;
|
||||
tags.name[id] = strdup(name);
|
||||
if (!tags.name[id]) err(EX_OSERR, "strdup");
|
||||
tags.color[id] = color;
|
||||
if (!tags.name[id]) err(EX_OSERR, "strdup");
|
||||
return (struct Tag) { id, tags.name[id], color };
|
||||
}
|
||||
|
|
5
ui.c
5
ui.c
|
@ -85,7 +85,10 @@ static void windowRemove(struct Window *win) {
|
|||
|
||||
static struct Window *windowFor(struct Tag tag) {
|
||||
struct Window *win = windows.tag[tag.id];
|
||||
if (win) return win;
|
||||
if (win) {
|
||||
win->tag = tag;
|
||||
return win;
|
||||
}
|
||||
|
||||
win = calloc(1, sizeof(*win));
|
||||
if (!win) err(EX_OSERR, "calloc");
|
||||
|
|
Loading…
Reference in New Issue