X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=render%2Ftheme.c;h=cb50887bab6448e76e9e33315e53bf612120cacb;hb=e5d6a552a46bce27cbe25c92023094b44c9a8284;hp=cf4839776cc19af9a663a64212514713413b6aad;hpb=58be283e94c062377c86e23beb4d3ac51dc57fb8;p=chaz%2Fopenbox diff --git a/render/theme.c b/render/theme.c index cf483977..cb50887b 100644 --- a/render/theme.c +++ b/render/theme.c @@ -66,7 +66,8 @@ static gboolean find_appearance(ParseState *ps, xmlNodePtr n, const gchar *names RrTheme* RrThemeNew(const RrInstance *inst, gchar *name, RrFont *active_window_font, RrFont *inactive_window_font, - RrFont *menu_title_font, RrFont *menu_item_font) + RrFont *menu_title_font, RrFont *menu_item_font, + RrFont *osd_font) { ParseState ps; xmlNodePtr root; @@ -76,15 +77,18 @@ RrTheme* RrThemeNew(const RrInstance *inst, gchar *name, if (name) { if (!parse_load_theme(name, &ps.doc, &root, &ps.path)) { - g_warning("Falling back to the default theme: '%s'", + g_message("Unable to load the theme '%s'", name); + g_message("Falling back to the default theme '%s'", DEFAULT_THEME); /* make it fall back to default theme */ name = NULL; } } if (!name) { - if (!parse_load_theme(DEFAULT_THEME, &ps.doc, &root, &ps.path)) + if (!parse_load_theme(DEFAULT_THEME, &ps.doc, &root, &ps.path)) { + g_message("Unable to load the theme '%s'", DEFAULT_THEME); return NULL; + } } ps.inst = inst; @@ -115,7 +119,8 @@ RrTheme* RrThemeNew(const RrInstance *inst, gchar *name, theme->a_focused_handle = RrAppearanceNew(inst, 0); theme->a_unfocused_handle = RrAppearanceNew(inst, 0); theme->a_menu = RrAppearanceNew(inst, 0); - theme->a_menu_title = RrAppearanceNew(inst, 1); + theme->a_menu_title = RrAppearanceNew(inst, 0); + theme->a_menu_text_title = RrAppearanceNew(inst, 1); theme->a_menu_normal = RrAppearanceNew(inst, 0); theme->a_menu_disabled = RrAppearanceNew(inst, 0); theme->a_menu_selected = RrAppearanceNew(inst, 0); @@ -169,6 +174,12 @@ RrTheme* RrThemeNew(const RrInstance *inst, gchar *name, } else theme->menu_font = RrFontOpenDefault(inst); + if (osd_font) { + theme->osd_font = osd_font; + RrFontRef(osd_font); + } else + theme->osd_font = RrFontOpenDefault(inst); + /* load direct dimensions */ if (!FIND(int, L("menu","overlap"), &theme->menu_overlap, -100, 100)) @@ -567,7 +578,7 @@ RrTheme* RrThemeNew(const RrInstance *inst, gchar *name, set_default_appearance(theme->a_unfocused_grip); if (!FIND(appearance, L("menu","entries"), theme->a_menu, FALSE)) set_default_appearance(theme->a_menu); - if (!FIND(appearance, L("menu","title"), theme->a_menu_title, FALSE)) + if (!FIND(appearance, L("menu","title"), theme->a_menu_title, TRUE)) set_default_appearance(theme->a_menu_title); if (!FIND(appearance, L("menu", "active"), theme->a_menu_selected, TRUE)) set_default_appearance(theme->a_menu_selected); @@ -752,6 +763,7 @@ RrTheme* RrThemeNew(const RrInstance *inst, gchar *name, theme->a_icon->surface.grad = theme->a_clear->surface.grad = theme->a_clear_tex->surface.grad = + theme->a_menu_text_title->surface.grad = theme->a_menu_normal->surface.grad = theme->a_menu_disabled->surface.grad = theme->a_menu_text_normal->surface.grad = @@ -766,8 +778,8 @@ RrTheme* RrThemeNew(const RrInstance *inst, gchar *name, theme->a_focused_label->texture[0].data.text.justify = winjust; theme->osd_hilite_label->texture[0].data.text.justify = RR_JUSTIFY_LEFT; theme->a_focused_label->texture[0].data.text.font = - theme->osd_hilite_label->texture[0].data.text.font = theme->win_font_focused; + theme->osd_hilite_label->texture[0].data.text.font = theme->osd_font; theme->a_focused_label->texture[0].data.text.color = theme->title_focused_color; theme->osd_hilite_label->texture[0].data.text.color = @@ -811,18 +823,20 @@ RrTheme* RrThemeNew(const RrInstance *inst, gchar *name, theme->a_unfocused_label->texture[0].data.text.shadow_alpha = theme->title_unfocused_shadow_alpha; - theme->a_menu_title->texture[0].type = RR_TEXTURE_TEXT; - theme->a_menu_title->texture[0].data.text.justify = mtitlejust; - theme->a_menu_title->texture[0].data.text.font = theme->menu_title_font; - theme->a_menu_title->texture[0].data.text.color = theme->menu_title_color; + theme->a_menu_text_title->texture[0].type = RR_TEXTURE_TEXT; + theme->a_menu_text_title->texture[0].data.text.justify = mtitlejust; + theme->a_menu_text_title->texture[0].data.text.font = + theme->menu_title_font; + theme->a_menu_text_title->texture[0].data.text.color = + theme->menu_title_color; if (!FIND(shadow, L("menu","title","text","shadow","offset"), - theme->a_menu_title)) - theme->a_menu_title->texture[0].data.text.shadow_offset_x = - theme->a_menu_title->texture[0].data.text.shadow_offset_y = 0; - theme->a_menu_title->texture[0].data.text.shadow_color = + theme->a_menu_text_title)) + theme->a_menu_text_title->texture[0].data.text.shadow_offset_x = + theme->a_menu_text_title->texture[0].data.text.shadow_offset_y = 0; + theme->a_menu_text_title->texture[0].data.text.shadow_color = theme->menu_title_shadow_color; - theme->a_menu_title->texture[0].data.text.shadow_alpha = + theme->a_menu_text_title->texture[0].data.text.shadow_alpha = theme->menu_title_shadow_alpha; theme->a_menu_text_normal->texture[0].type = @@ -1117,7 +1131,7 @@ RrTheme* RrThemeNew(const RrInstance *inst, gchar *name, MAX(theme->win_font_height, RrFontHeight(theme->win_font_unfocused, a->texture[0].data.text.shadow_offset_y)); - a = theme->a_menu_title; + a = theme->a_menu_text_title; theme->menu_title_font_height = RrFontHeight(theme->menu_title_font, a->texture[0].data.text.shadow_offset_y); @@ -1294,6 +1308,7 @@ void RrThemeFree(RrTheme *theme) RrAppearanceFree(theme->a_unfocused_handle); RrAppearanceFree(theme->a_menu); RrAppearanceFree(theme->a_menu_title); + RrAppearanceFree(theme->a_menu_text_title); RrAppearanceFree(theme->a_menu_normal); RrAppearanceFree(theme->a_menu_disabled); RrAppearanceFree(theme->a_menu_selected);