draw: remove bg color markup, move to textbox

Signed-off-by: Julien Danjou <julien@danjou.info>
This commit is contained in:
Julien Danjou 2008-12-03 11:36:52 +01:00
parent b5fb612ea3
commit 9adf3fd869
5 changed files with 29 additions and 36 deletions

View File

@ -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

19
draw.c
View File

@ -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;

2
draw.h
View File

@ -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;

View File

@ -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 .. "<bg "..background.." color='"..bg_color.."'/> <span color='"..util.color_strip_alpha(fg_color).."'>"..util.escape(t.name).."</span> "
if fg_color then
text = text .. "<bg "..background.." /> <span color='"..util.color_strip_alpha(fg_color).."'>"..util.escape(t.name).."</span> "
else
text = text .. " <bg "..background.." />"..util.escape(t.name).." "
end
text = text .. "</span>"
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 .. "<bg color='"..bg_focus.."'/><span color='"..util.color_strip_alpha(fg_focus).."'>"..name.."</span>"
if fg_focus then
text = text .. "<span color='"..util.color_strip_alpha(fg_focus).."'>"..name.."</span>"
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 .. "<bg color='"..bg_urgent.."'/><span color='"..util.color_strip_alpha(fg_urgent).."'>"..name.."</span>"
text = text .. "<span color='"..util.color_strip_alpha(fg_urgent).."'>"..name.."</span>"
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

View File

@ -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);