all repos — openbox @ aca8327244e0e1ebc4e367a57339ff2dc944782c

openbox fork - make it a bit more like ryudo

add osd theme elements
Dana Jansens danakj@orodu.net
commit

aca8327244e0e1ebc4e367a57339ff2dc944782c

parent

698e901c78f302f145787ae76079ff06d4d11fa2

3 files changed, 65 insertions(+), 15 deletions(-)

jump to
M data/themerc.xsddata/themerc.xsd

@@ -137,7 +137,10 @@ </xs:complexType>

<xs:complexType name="allosd"> <xs:all> - <xs:element name="text" type="obt:text" minOccurs="0"/> + <xs:element name="label" type="obt:textarea" minOccurs="0"/> + <xs:element name="background" type="obt:area" minOccurs="0"/> + <xs:element name="hilight" type="obt:area" minOccurs="0"/> + <xs:element name="unhilight" type="obt:area" minOccurs="0"/> </xs:all> </xs:complexType>
M render/theme.crender/theme.c

@@ -141,6 +141,10 @@ theme->a_menu_bullet_normal = RrAppearanceNew(inst, 1);

theme->a_menu_bullet_selected = RrAppearanceNew(inst, 1); theme->a_clear = RrAppearanceNew(inst, 0); theme->a_clear_tex = RrAppearanceNew(inst, 1); + theme->osd_hilite_bg = RrAppearanceNew(inst, 0); + theme->osd_hilite_label = RrAppearanceNew(inst, 1); + theme->osd_hilite_fg = RrAppearanceNew(inst, 0); + theme->osd_unhilite_fg = RrAppearanceNew(inst, 0); /* load the font stuff */

@@ -263,7 +267,7 @@ theme->cb_unfocused_color = RrColorNew(inst, 255, 255, 255);

if (!FIND(color, L("window","active","label","text","primary"), &theme->title_focused_color, NULL)) theme->title_focused_color = RrColorNew(inst, 0x0, 0x0, 0x0); - if (!FIND(color, L("osd","text","primary"), + if (!FIND(color, L("osd","label","text","primary"), &theme->osd_color, NULL)) theme->osd_color = RrColorNew(inst, theme->title_focused_color->r,

@@ -388,7 +392,7 @@ {

theme->title_focused_shadow_color = RrColorNew(inst, 0, 0, 0); theme->title_focused_shadow_alpha = 50; } - if (!FIND(color, L("osd","text","shadow","primary"), + if (!FIND(color, L("osd","label","text","shadow","primary"), &theme->osd_shadow_color, &theme->osd_shadow_alpha)) { theme->osd_shadow_color =

@@ -604,17 +608,33 @@ theme->a_menu_disabled_selected, TRUE))

theme->a_menu_disabled_selected = RrAppearanceCopy(theme->a_menu_selected); - /* read the appearances for rendering non-decorations */ - theme->osd_hilite_bg = RrAppearanceCopy(theme->a_focused_title); - theme->osd_hilite_label = RrAppearanceCopy(theme->a_focused_label); - if (theme->a_focused_label->surface.grad != RR_SURFACE_PARENTREL) - theme->osd_hilite_fg = RrAppearanceCopy(theme->a_focused_label); - else - theme->osd_hilite_fg = RrAppearanceCopy(theme->a_focused_title); - if (theme->a_unfocused_label->surface.grad != RR_SURFACE_PARENTREL) - theme->osd_unhilite_fg = RrAppearanceCopy(theme->a_unfocused_label); - else - theme->osd_unhilite_fg = RrAppearanceCopy(theme->a_unfocused_title); + /* read appearances for non-decorations (on-screen-display) */ + if (!FIND(appearance, L("osd", "background"), theme->osd_hilite_bg, FALSE)) { + RrAppearanceFree(theme->osd_hilite_bg); + theme->osd_hilite_bg = RrAppearanceCopy(theme->a_focused_title); + } + if (!FIND(appearance, L("osd", "label"), theme->osd_hilite_label, TRUE)) { + RrAppearanceFree(theme->osd_hilite_label); + theme->osd_hilite_label = RrAppearanceCopy(theme->a_focused_label); + } + /* osd_hilite_fg can't be parentrel */ + if (!FIND(appearance, L("osd", "hilight"), theme->osd_hilite_fg, FALSE)) { + RrAppearanceFree(theme->osd_hilite_fg); + if (theme->a_focused_label->surface.grad != RR_SURFACE_PARENTREL) + theme->osd_hilite_fg = RrAppearanceCopy(theme->a_focused_label); + else + theme->osd_hilite_fg = RrAppearanceCopy(theme->a_focused_title); + } + /* osd_unhilite_fg can't be parentrel either */ + if (!FIND(appearance, L("osd", "unhilight"), theme->osd_unhilite_fg, + FALSE)) + { + RrAppearanceFree(theme->osd_unhilite_fg); + if (theme->a_unfocused_label->surface.grad != RR_SURFACE_PARENTREL) + theme->osd_unhilite_fg=RrAppearanceCopy(theme->a_unfocused_label); + else + theme->osd_unhilite_fg=RrAppearanceCopy(theme->a_unfocused_title); + } /* read buttons textures */ if (!FIND(appearance, L("window","active","buttons","disabled"),

@@ -816,7 +836,7 @@ theme->title_focused_shadow_color;

theme->a_focused_label->texture[0].data.text.shadow_alpha = theme->title_focused_shadow_alpha; - if (!FIND(shadow, L("osd","text","shadow","offset"), + if (!FIND(shadow, L("osd","label","text","shadow","offset"), theme->osd_hilite_label)) { theme->osd_hilite_label->texture[0].data.text.shadow_offset_x =
M tools/themetoxml/themetoxml.ctools/themetoxml/themetoxml.c

@@ -465,6 +465,9 @@ if (read_color(db, "menu.items.active.text.color",

&i, &j, &k)) COLOR4("menu","active","text","primary",i,j,k,255); + if (read_color(db, "osd.label.text.color", &i, &j, &k)) + COLOR4("osd","label","text","primary",i,j,k,255); + APPEARANCE3("window.active.title.bg", "window", "active", "titlebar"); APPEARANCE3("window.inactive.title.bg", "window", "inactive", "titlebar"); APPEARANCE3("window.active.label.bg", "window", "active", "label");

@@ -498,6 +501,11 @@ APPEARANCE4("window.active.button.hover.bg",

"window", "active", "buttons", "hover"); APPEARANCE4("window.inactive.button.hover.bg", "window", "inactive", "buttons", "hover"); + + APPEARANCE2("osd.bg", "osd", "background"); + APPEARANCE2("osd.label.bg", "osd", "label"); + APPEARANCE2("osd.hilight.bg", "osd", "hilight"); + APPEARANCE2("osd.unhilight.bg", "osd", "unhilight"); if (read_string(db, "window.active.label.text.font", &s)) { char *p;

@@ -589,6 +597,25 @@ COLOR4("menu","inactive","shadow","primary",j,j,j,i);

COLOR5("menu","active","text","shadow","primary",j,j,j,i); COLOR4("menu","disabled","shadow","primary",j,j,j,i); COLOR5("menu","active-disabled","text","shadow","primary",j,j,j,i); + } + } + + if (read_string(db, "osd.label.text.font", &s)) { + char *p; + if (strstr(s, "shadow=y")) { + if ((p = strstr(s, "shadowoffset="))) + i = parse_inline_number(p + strlen("shadowoffset=")); + else + i = 1; + ATTR5("osd","label","text","shadow","offset","x",NUM(i)); + ATTR5("osd","label","text","shadow","offset","y",NUM(i)); + } + if ((p = strstr(s, "shadowtint="))) + { + i = parse_inline_number(p + strlen("shadowtint=")); + j = (i > 0 ? 0 : 255); + i = ABS(i*255/100); + COLOR5("osd","label","text","shadow","primary",j,j,j,i); } }