mirror of
https://github.com/libretro/RetroArch.git
synced 2024-11-28 18:50:29 +00:00
Add MENU_SETTING_CTL_IS_OF_PATH_TYPE
This commit is contained in:
parent
6b01dd86ae
commit
71f2fa531c
@ -50,7 +50,7 @@ enum menu_entry_type menu_entry_get_type(uint32_t i)
|
|||||||
rarch_setting_t *setting = menu_entries_get_setting(i);
|
rarch_setting_t *setting = menu_entries_get_setting(i);
|
||||||
|
|
||||||
/* XXX Really a special kind of ST_ACTION, but this should be changed */
|
/* XXX Really a special kind of ST_ACTION, but this should be changed */
|
||||||
if (menu_setting_is_of_path_type(setting))
|
if (menu_setting_ctl(MENU_SETTING_CTL_IS_OF_PATH_TYPE, (void*)setting))
|
||||||
return MENU_ENTRY_PATH;
|
return MENU_ENTRY_PATH;
|
||||||
|
|
||||||
if (setting)
|
if (setting)
|
||||||
@ -186,7 +186,8 @@ void menu_entry_bind_joyaxis_set(uint32_t i, int32_t value)
|
|||||||
void menu_entry_pathdir_selected(uint32_t i)
|
void menu_entry_pathdir_selected(uint32_t i)
|
||||||
{
|
{
|
||||||
rarch_setting_t *setting = menu_entries_get_setting(i);
|
rarch_setting_t *setting = menu_entries_get_setting(i);
|
||||||
if (menu_setting_is_of_path_type(setting))
|
|
||||||
|
if (menu_setting_ctl(MENU_SETTING_CTL_IS_OF_PATH_TYPE, (void*)setting))
|
||||||
menu_setting_action_right(setting, false);
|
menu_setting_action_right(setting, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1821,19 +1821,6 @@ int menu_action_handle_setting(rarch_setting_t *setting,
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool menu_setting_is_of_path_type(rarch_setting_t *setting)
|
|
||||||
{
|
|
||||||
uint64_t flags = menu_setting_get_flags(setting);
|
|
||||||
if (
|
|
||||||
setting &&
|
|
||||||
(menu_setting_get_type(setting) == ST_ACTION) &&
|
|
||||||
(flags & SD_FLAG_BROWSER_ACTION) &&
|
|
||||||
(setting->action_right || setting->action_left || setting->action_select) &&
|
|
||||||
setting->change_handler)
|
|
||||||
return true;
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
const char *menu_setting_get_values(rarch_setting_t *setting)
|
const char *menu_setting_get_values(rarch_setting_t *setting)
|
||||||
{
|
{
|
||||||
if (!setting)
|
if (!setting)
|
||||||
@ -7550,9 +7537,37 @@ error:
|
|||||||
|
|
||||||
bool menu_setting_ctl(enum menu_setting_ctl_state state, void *data)
|
bool menu_setting_ctl(enum menu_setting_ctl_state state, void *data)
|
||||||
{
|
{
|
||||||
|
uint64_t flags;
|
||||||
|
|
||||||
switch (state)
|
switch (state)
|
||||||
{
|
{
|
||||||
|
case MENU_SETTING_CTL_IS_OF_PATH_TYPE:
|
||||||
|
{
|
||||||
|
bool cbs_bound = false;
|
||||||
|
rarch_setting_t *setting = (rarch_setting_t*)data;
|
||||||
|
|
||||||
|
if (!setting)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
flags = menu_setting_get_flags(setting);
|
||||||
|
|
||||||
|
if (menu_setting_get_type(setting) != ST_ACTION)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
if (!setting->change_handler)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
cbs_bound = setting->action_right;
|
||||||
|
cbs_bound = cbs_bound || setting->action_left;
|
||||||
|
cbs_bound = cbs_bound || setting->action_select;
|
||||||
|
|
||||||
|
if (!cbs_bound)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
if (!(flags & SD_FLAG_BROWSER_ACTION))
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
case MENU_SETTING_CTL_NONE:
|
case MENU_SETTING_CTL_NONE:
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
|
@ -65,7 +65,8 @@ enum setting_flags
|
|||||||
|
|
||||||
enum menu_setting_ctl_state
|
enum menu_setting_ctl_state
|
||||||
{
|
{
|
||||||
MENU_SETTING_CTL_NONE = 0
|
MENU_SETTING_CTL_NONE = 0,
|
||||||
|
MENU_SETTING_CTL_IS_OF_PATH_TYPE
|
||||||
};
|
};
|
||||||
|
|
||||||
enum setting_list_flags
|
enum setting_list_flags
|
||||||
@ -329,8 +330,6 @@ void menu_setting_free(rarch_setting_t *list);
|
|||||||
**/
|
**/
|
||||||
rarch_setting_t* menu_setting_new(void);
|
rarch_setting_t* menu_setting_new(void);
|
||||||
|
|
||||||
bool menu_setting_is_of_path_type(rarch_setting_t *setting);
|
|
||||||
|
|
||||||
int menu_action_handle_setting(rarch_setting_t *setting,
|
int menu_action_handle_setting(rarch_setting_t *setting,
|
||||||
unsigned type, unsigned action, bool wraparound);
|
unsigned type, unsigned action, bool wraparound);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user