diff --git a/configuration.c b/configuration.c index f5088e3e16..9aee5162ba 100644 --- a/configuration.c +++ b/configuration.c @@ -477,6 +477,7 @@ static void config_set_defaults(void) def_menu, sizeof(settings->menu.driver)); settings->menu.xmb_scale_factor = xmb_scale_factor; settings->menu.xmb_alpha_factor = xmb_alpha_factor; + settings->menu.xmb_font[0] = '\0'; #endif settings->history_list_enable = def_history_list_enable; @@ -1517,6 +1518,7 @@ static bool config_load_file(const char *path, bool set_defaults) config_get_array(conf, "menu_driver", settings->menu.driver, sizeof(settings->menu.driver)); CONFIG_GET_INT_BASE(conf, settings, menu.xmb_scale_factor, "xmb_scale_factor"); CONFIG_GET_INT_BASE(conf, settings, menu.xmb_alpha_factor, "xmb_alpha_factor"); + config_get_path(conf, "xmb_font", settings->menu.xmb_font, sizeof(settings->menu.xmb_font)); #endif config_get_array(conf, "video_context_driver", settings->video.context_driver, sizeof(settings->video.context_driver)); config_get_array(conf, "audio_driver", settings->audio.driver, sizeof(settings->audio.driver)); @@ -2730,6 +2732,8 @@ bool config_save_file(const char *path) #ifdef HAVE_MENU config_set_int(conf, "xmb_scale_factor", settings->menu.xmb_scale_factor); config_set_int(conf, "xmb_alpha_factor", settings->menu.xmb_alpha_factor); + config_set_path(conf, "xmb_font", + !string_is_empty(settings->menu.xmb_font) ? settings->menu.xmb_font : ""); config_set_path(conf, "rgui_browser_directory", *settings->menu_content_directory ? settings->menu_content_directory : "default"); diff --git a/configuration.h b/configuration.h index 73149cea3f..82342d32ae 100644 --- a/configuration.h +++ b/configuration.h @@ -166,7 +166,7 @@ typedef struct settings unsigned title_color; unsigned xmb_scale_factor; unsigned xmb_alpha_factor; - + char xmb_font[PATH_MAX_LENGTH]; } menu; #endif diff --git a/menu/cbs/menu_cbs_deferred_push.c b/menu/cbs/menu_cbs_deferred_push.c index 813bf7ce7d..140c1e865e 100644 --- a/menu/cbs/menu_cbs_deferred_push.c +++ b/menu/cbs/menu_cbs_deferred_push.c @@ -541,6 +541,11 @@ static int deferred_push_video_font_path(menu_displaylist_info_t *info) return deferred_push_dlist(info, DISPLAYLIST_FONTS); } +static int deferred_push_xmb_font_path(menu_displaylist_info_t *info) +{ + return deferred_push_dlist(info, DISPLAYLIST_FONTS); +} + static int deferred_push_content_history_path(menu_displaylist_info_t *info) { return deferred_push_dlist(info, DISPLAYLIST_CONTENT_HISTORY); @@ -752,6 +757,9 @@ static int menu_cbs_init_bind_deferred_push_compare_label( case MENU_LABEL_VIDEO_FONT_PATH: BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_video_font_path); break; + case MENU_LABEL_XMB_FONT: + BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_xmb_font_path); + break; case MENU_LABEL_CONTENT_HISTORY_PATH: BIND_ACTION_DEFERRED_PUSH(cbs, deferred_push_content_history_path); break; diff --git a/menu/cbs/menu_cbs_title.c b/menu/cbs/menu_cbs_title.c index d2d83c0484..e1504c819d 100644 --- a/menu/cbs/menu_cbs_title.c +++ b/menu/cbs/menu_cbs_title.c @@ -120,6 +120,12 @@ static int action_get_title_font_path(const char *path, const char *label, return fill_title(s, "Font", path, len); } +static int action_get_xmb_font_path(const char *path, const char *label, + unsigned menu_type, char *s, size_t len) +{ + return fill_title(s, "Font", path, len); +} + static int action_get_title_video_shader_preset(const char *path, const char *label, unsigned menu_type, char *s, size_t len) { @@ -890,6 +896,9 @@ static int menu_cbs_init_bind_title_compare_label(menu_file_list_cbs_t *cbs, case MENU_LABEL_VIDEO_FONT_PATH: BIND_ACTION_GET_TITLE(cbs, action_get_title_font_path); break; + case MENU_LABEL_XMB_FONT: + BIND_ACTION_GET_TITLE(cbs, action_get_xmb_font_path); + break; case MENU_LABEL_VIDEO_FILTER: BIND_ACTION_GET_TITLE(cbs, action_get_title_video_filter); break; diff --git a/menu/intl/menu_hash_us.c b/menu/intl/menu_hash_us.c index 0c61e1eeb5..13b97e73c8 100644 --- a/menu/intl/menu_hash_us.c +++ b/menu/intl/menu_hash_us.c @@ -284,6 +284,8 @@ static const char *menu_hash_to_str_us_label(uint32_t hash) return "dpi_override_enable"; case MENU_LABEL_DPI_OVERRIDE_VALUE: return "dpi_override_value"; + case MENU_LABEL_XMB_FONT: + return "xmb_font"; case MENU_LABEL_XMB_SCALE_FACTOR: return "xmb_scale_factor"; case MENU_LABEL_XMB_ALPHA_FACTOR: @@ -1022,6 +1024,8 @@ const char *menu_hash_to_str_us(uint32_t hash) return "XMB Scale Factor"; case MENU_LABEL_VALUE_XMB_ALPHA_FACTOR: return "XMB Alpha Factor"; + case MENU_LABEL_VALUE_XMB_FONT: + return "XMB Font"; case MENU_LABEL_VALUE_SUSPEND_SCREENSAVER_ENABLE: return "Suspend Screensaver"; case MENU_LABEL_VALUE_VIDEO_DISABLE_COMPOSITION: diff --git a/menu/menu_hash.h b/menu/menu_hash.h index 0feaff3155..ce2b882343 100644 --- a/menu/menu_hash.h +++ b/menu/menu_hash.h @@ -377,6 +377,8 @@ extern "C" { #define MENU_LABEL_VALUE_XMB_SCALE_FACTOR 0x0DCDBDB13 #define MENU_LABEL_XMB_ALPHA_FACTOR 0x01049C5CF #define MENU_LABEL_VALUE_XMB_ALPHA_FACTOR 0x0D5A712F1 +#define MENU_LABEL_XMB_FONT 0x0ECA56CA2 +#define MENU_LABEL_VALUE_XMB_FONT 0x0020337E7 #define MENU_LABEL_VOLUME_UP 0xa66e9681U #define MENU_LABEL_VOLUME_DOWN 0xfc64f3d4U #define MENU_LABEL_LOG_VERBOSITY 0x6648c96dU diff --git a/menu/menu_setting.c b/menu/menu_setting.c index a6513d4ab2..d33e1cc75a 100644 --- a/menu/menu_setting.c +++ b/menu/menu_setting.c @@ -5873,6 +5873,20 @@ static bool setting_append_list_menu_options( general_write_handler, general_read_handler); menu_settings_list_current_add_range(list, list_info, 0, 100, 1, true, true); + + CONFIG_PATH( + list, list_info, + settings->menu.xmb_font, + sizeof(settings->menu.xmb_font), + menu_hash_to_str(MENU_LABEL_XMB_FONT), + menu_hash_to_str(MENU_LABEL_VALUE_XMB_FONT), + settings->menu.xmb_font, + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + settings_data_list_current_add_flags(list, list_info, SD_FLAG_ALLOW_EMPTY); } CONFIG_BOOL(