diff --git a/awesomerc.5.txt b/awesomerc.5.txt index d448f81c..c4efa93c 100644 --- a/awesomerc.5.txt +++ b/awesomerc.5.txt @@ -45,7 +45,6 @@ http://library.gnome.org/devel/pango/stable/PangoMarkupFormat.html. List of *awesome* markup elements and their attributes: * bg - - color: background color - image: path to a background image - align: background image alignment - resize: resize background image to text size diff --git a/draw.c b/draw.c index e9469006..f0600f23 100644 --- a/draw.c +++ b/draw.c @@ -158,9 +158,6 @@ draw_markup_on_element(markup_parser_data_t *p, const char *elem, { draw_parser_data_t *data = p->priv; - xcolor_init_request_t reqs[3]; - int8_t i, bg_color_nbr = -1, reqs_nbr = -1; - /* hack: markup.c validates tags so we can avoid strcmps here */ switch (*elem) { case 'b': @@ -180,13 +177,6 @@ draw_markup_on_element(markup_parser_data_t *p, const char *elem, for(; *names; names++, values++) switch(a_tokenize(*names, -1)) { - case A_TK_COLOR: - reqs[++reqs_nbr] = xcolor_init_unchecked(&data->bg_color, - *values, - a_strlen(*values)); - - bg_color_nbr = reqs_nbr; - break; case A_TK_IMAGE: if(data->bg_image) image_delete(&data->bg_image); @@ -202,12 +192,6 @@ draw_markup_on_element(markup_parser_data_t *p, const char *elem, } break; } - - for(i = 0; i <= reqs_nbr; i++) - if(i == bg_color_nbr) - data->has_bg_color = xcolor_init_reply(reqs[i]); - else - xcolor_init_reply(reqs[i]); } static bool @@ -311,9 +295,6 @@ draw_text(draw_context_t *ctx, font_t *font, PangoEllipsizeMode ellip, PangoWrap len = pdata->len; } - if(pdata->has_bg_color) - draw_rectangle(ctx, area, 1.0, true, &pdata->bg_color); - if(pdata->bg_image) { x = area.x; diff --git a/draw.h b/draw.h index 967b3c22..8cad5023 100644 --- a/draw.h +++ b/draw.h @@ -165,8 +165,6 @@ typedef struct { int top, left; } bg_margin; - bool has_bg_color; - xcolor_t bg_color; image_t *bg_image; alignment_t bg_align; bool bg_resize; diff --git a/lib/awful/widget.lua.in b/lib/awful/widget.lua.in index a9006e23..8d82e847 100644 --- a/lib/awful/widget.lua.in +++ b/lib/awful/widget.lua.in @@ -51,7 +51,7 @@ local function taglist_update (screen, w, label, buttons, data) end -- Update widgets text for k, tag in ipairs(tags) do - w[k].text = label(tag) + w[k].text, w[k].bg = label(tag) if buttons then if not data[tag] then -- Replace press function by a new one calling with tags as @@ -112,7 +112,7 @@ end -- squares_sel Optional: a user provided image for selected squares. -- squares_unsel Optional: a user provided image for unselected squares. -- squares_resize Optional: true or false to resize squares. --- @return A string to print. +-- @return A string to print and a background color. function taglist.label.all(t, args) if not args then args = {} end local theme = beautiful.get() @@ -150,13 +150,13 @@ function taglist.label.all(t, args) end end end - if bg_color and fg_color then - text = text .. " "..util.escape(t.name).." " + if fg_color then + text = text .. " "..util.escape(t.name).." " else text = text .. " "..util.escape(t.name).." " end text = text .. "" - return text + return text, bg_color end --- Return labels for a taglist widget with all *non empty* tags from screen. @@ -220,7 +220,8 @@ local function tasklist_update(w, buttons, label, data) w[k]:buttons(data[c]) w[k + 1]:buttons(data[c]) end - w[k + 1].text, w[k].bg = label(clients[(k + 1) / 2]) + w[k + 1].text, w[k + 1].bg = label(clients[(k + 1) / 2]) + w[k].bg = w[k + 1].bg if w[k + 1].text then -- Set icon w[k].image = clients[(k + 1) / 2].icon @@ -288,15 +289,15 @@ local function widget_tasklist_label_common(c, args) name = util.escape(c.name) or "" end if capi.client.focus == c then - if bg_focus and fg_focus then - bg = bg_focus - text = text .. ""..name.."" + bg = bg_focus + if fg_focus then + text = text .. ""..name.."" else text = text .. name end - elseif c.urgent and bg_urgent and fg_urgent then + elseif c.urgent and fg_urgent then bg = bg_urgent - text = text .. ""..name.."" + text = text .. ""..name.."" else text = text .. name end @@ -315,7 +316,7 @@ end -- fg_focus The foreground color for focused client. -- bg_urgent The background color for urgent clients. -- fg_urgent The foreground color for urgent clients. --- @return A string to print. +-- @return A string to print and a background color. function tasklist.label.allscreen(c, screen, args) return widget_tasklist_label_common(c, args) end @@ -331,7 +332,7 @@ end -- fg_focus The foreground color for focused client. -- bg_urgent The background color for urgent clients. -- fg_urgent The foreground color for urgent clients. --- @return A string to print. +-- @return A string to print and a background color. function tasklist.label.alltags(c, screen, args) -- Only print client on the same screen as this widget if c.screen ~= screen then return end @@ -349,7 +350,7 @@ end -- fg_focus The foreground color for focused client. -- bg_urgent The background color for urgent clients. -- fg_urgent The foreground color for urgent clients. --- @return A string to print. +-- @return A string to print and a background color. function tasklist.label.currenttags(c, screen, args) -- Only print client on the same screen as this widget if c.screen ~= screen then return end diff --git a/widgets/textbox.c b/widgets/textbox.c index 5f8c9249..f5483a31 100644 --- a/widgets/textbox.c +++ b/widgets/textbox.c @@ -49,6 +49,8 @@ typedef struct alignment_t align; /** Margin */ padding_t margin; + /** Background color */ + xcolor_t bg; } textbox_data_t; static area_t @@ -87,6 +89,9 @@ textbox_draw(widget_t *widget, draw_context_t *ctx, area_t geometry, { textbox_data_t *d = widget->data; + if(d->bg.initialized) + draw_rectangle(ctx, geometry, 1.0, true, &d->bg); + if(d->border.width > 0) draw_rectangle(ctx, geometry, d->border.width, false, &d->border.color); @@ -134,6 +139,7 @@ luaA_textbox_margin(lua_State *L) * \lfield border_color The border color. * \lfield align Text alignment, left, center or right. * \lfield margin Method to pass text margin: a table with top, left, right and bottom keys. + * \lfield bg Background color. */ static int luaA_textbox_index(lua_State *L, awesome_token_t token) @@ -143,6 +149,8 @@ luaA_textbox_index(lua_State *L, awesome_token_t token) switch(token) { + case A_TK_BG: + return luaA_pushcolor(L, &d->bg); case A_TK_MARGIN: lua_pushcfunction(L, luaA_textbox_margin); return 1; @@ -209,6 +217,12 @@ luaA_textbox_newindex(lua_State *L, awesome_token_t token) switch(token) { + case A_TK_BG: + if(lua_isnil(L, 3)) + p_clear(&d->bg, 1); + else if((buf = luaL_checklstring(L, 3, &len))) + xcolor_init_reply(xcolor_init_unchecked(&d->bg, buf, len)); + break; case A_TK_ALIGN: if((buf = luaL_checklstring(L, 3, &len))) d->align = draw_align_fromstr(buf, len);