draw: really copy colors

Signed-off-by: Julien Danjou <julien@danjou.info>
This commit is contained in:
Julien Danjou 2008-06-29 12:12:52 +02:00
parent b63f768f00
commit 3ebca2181c
5 changed files with 28 additions and 12 deletions

View File

@ -205,7 +205,23 @@ static inline void
xcolor_wipe(xcolor_t *color)
{
if(color)
{
p_delete(&color->name);
p_clear(color, 1);
}
}
static inline xcolor_t
xcolor_copy(xcolor_t *color)
{
xcolor_t c;
assert(color);
c = *color;
c.name = a_strdup(color->name);
return c;
}
bool xcolor_new(xcb_connection_t *, int, const char *, xcolor_t *);

View File

@ -547,12 +547,12 @@ luaA_statusbar_new(lua_State *L)
if(!(buf = luaA_getopt_string(L, 1, "fg", NULL))
|| !xcolor_new(globalconf.connection, globalconf.default_screen,
buf, &sb->colors.fg))
sb->colors.fg = globalconf.colors.fg;
sb->colors.fg = xcolor_copy(&globalconf.colors.fg);
if(!(buf = luaA_getopt_string(L, 1, "bg", NULL))
|| !xcolor_new(globalconf.connection, globalconf.default_screen,
buf, &sb->colors.bg))
sb->colors.bg = globalconf.colors.bg;
sb->colors.bg = xcolor_copy(&globalconf.colors.bg);
buf = luaA_getopt_lstring(L, 1, "align", "left", &len);
sb->align = draw_align_fromstr(buf, len);

View File

@ -317,17 +317,17 @@ luaA_titlebar_new(lua_State *L)
if(!(buf = luaA_getopt_string(L, -1, "fg", NULL))
|| !xcolor_new(globalconf.connection, globalconf.default_screen,
buf, &tb->colors.fg))
tb->colors.fg = globalconf.colors.fg;
tb->colors.fg = xcolor_copy(&globalconf.colors.fg);
if(!(buf = luaA_getopt_string(L, -1, "bg", NULL))
|| !xcolor_new(globalconf.connection, globalconf.default_screen,
buf, &tb->colors.bg))
tb->colors.bg = globalconf.colors.bg;
tb->colors.bg = xcolor_copy(&globalconf.colors.bg);
if(!(buf = luaA_getopt_string(L, -1, "border_color", NULL))
|| !xcolor_new(globalconf.connection, globalconf.default_screen,
buf, &tb->border.color))
tb->border.color = globalconf.colors.fg;
tb->border.color = xcolor_copy(&globalconf.colors.fg);
tb->border.width = luaA_getopt_number(L, 1, "border_width", 0);

View File

@ -124,7 +124,7 @@ graph_plot_add(graph_data_t *d, const char *title)
plot->values = p_new(float, d->size);
plot->lines = p_new(int, d->size);
plot->max_value = 100.0;
plot->color_start = globalconf.colors.fg;
plot->color_start = xcolor_copy(&globalconf.colors.fg);
plot->vertical_gradient = true;
plot_list_append(&d->plots, plot);
@ -596,8 +596,8 @@ graph_new(alignment_t align)
d->draw_from = p_new(int, d->size);
d->draw_to = p_new(int, d->size);
d->bg = globalconf.colors.bg;
d->border_color = globalconf.colors.fg;
d->bg = xcolor_copy(&globalconf.colors.bg);
d->border_color = xcolor_copy(&globalconf.colors.fg);
return w;
}

View File

@ -103,10 +103,10 @@ progressbar_bar_add(progressbar_data_t *d, const char *title)
bar_t *bar = p_new(bar_t, 1);
bar->title = a_strdup(title);
bar->fg = globalconf.colors.fg;
bar->fg_off = globalconf.colors.bg;
bar->bg = globalconf.colors.bg;
bar->border_color = globalconf.colors.fg;
bar->fg = xcolor_copy(&globalconf.colors.fg);
bar->fg_off = xcolor_copy(&globalconf.colors.bg);
bar->bg = xcolor_copy(&globalconf.colors.bg);
bar->border_color = xcolor_copy(&globalconf.colors.fg);
bar->max_value = 100.0;
/* append the bar in the list */