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 tagFor(const char *name, enum IRCColor color) {
|
||||||
struct Tag tag = tagFind(name);
|
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;
|
if (tags.len == TagsLen) return TagStatus;
|
||||||
|
|
||||||
size_t id = tags.len++;
|
size_t id = tags.len++;
|
||||||
tags.name[id] = strdup(name);
|
tags.name[id] = strdup(name);
|
||||||
if (!tags.name[id]) err(EX_OSERR, "strdup");
|
|
||||||
tags.color[id] = color;
|
tags.color[id] = color;
|
||||||
|
if (!tags.name[id]) err(EX_OSERR, "strdup");
|
||||||
return (struct Tag) { id, tags.name[id], color };
|
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) {
|
static struct Window *windowFor(struct Tag tag) {
|
||||||
struct Window *win = windows.tag[tag.id];
|
struct Window *win = windows.tag[tag.id];
|
||||||
if (win) return win;
|
if (win) {
|
||||||
|
win->tag = tag;
|
||||||
|
return win;
|
||||||
|
}
|
||||||
|
|
||||||
win = calloc(1, sizeof(*win));
|
win = calloc(1, sizeof(*win));
|
||||||
if (!win) err(EX_OSERR, "calloc");
|
if (!win) err(EX_OSERR, "calloc");
|
||||||
|
|
Loading…
Reference in New Issue