mirror of
https://github.com/libretro/RetroArch
synced 2025-03-01 07:13:35 +00:00
(menu_list.c) Add menu_list_get_size and menu_list_get_stack_size
This commit is contained in:
parent
77a131b0f9
commit
1daf8c354e
@ -43,7 +43,9 @@ void file_list_push(file_list_t *list,
|
|||||||
|
|
||||||
size_t file_list_get_size(const file_list_t *list)
|
size_t file_list_get_size(const file_list_t *list)
|
||||||
{
|
{
|
||||||
return list->size;
|
if (list)
|
||||||
|
return list->size;
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
size_t file_list_get_directory_ptr(const file_list_t *list)
|
size_t file_list_get_directory_ptr(const file_list_t *list)
|
||||||
|
@ -106,7 +106,7 @@ static int menu_action_ok(menu_file_list_cbs_t *cbs)
|
|||||||
const char *path = NULL;
|
const char *path = NULL;
|
||||||
unsigned type = 0;
|
unsigned type = 0;
|
||||||
|
|
||||||
if (file_list_get_size(driver.menu->selection_buf) == 0)
|
if (menu_list_get_size() == 0)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
file_list_get_at_offset(driver.menu->selection_buf,
|
file_list_get_at_offset(driver.menu->selection_buf,
|
||||||
@ -208,12 +208,11 @@ static int menu_settings_iterate(unsigned action,
|
|||||||
menu_navigation_decrement(driver.menu);
|
menu_navigation_decrement(driver.menu);
|
||||||
else
|
else
|
||||||
menu_navigation_set(driver.menu,
|
menu_navigation_set(driver.menu,
|
||||||
file_list_get_size(driver.menu->selection_buf) - 1);
|
menu_list_get_size() - 1);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case MENU_ACTION_DOWN:
|
case MENU_ACTION_DOWN:
|
||||||
if ((driver.menu->selection_ptr + 1) <
|
if ((driver.menu->selection_ptr + 1) < (menu_list_get_size()))
|
||||||
file_list_get_size(driver.menu->selection_buf))
|
|
||||||
menu_navigation_increment(driver.menu);
|
menu_navigation_increment(driver.menu);
|
||||||
else
|
else
|
||||||
menu_navigation_clear(driver.menu, false);
|
menu_navigation_clear(driver.menu, false);
|
||||||
@ -489,7 +488,7 @@ static int menu_load_or_open_zip_iterate(unsigned action)
|
|||||||
file_list_get_last(driver.menu->menu_stack, &menu_path, &menu_label,
|
file_list_get_last(driver.menu->menu_stack, &menu_path, &menu_label,
|
||||||
NULL);
|
NULL);
|
||||||
|
|
||||||
if (file_list_get_size(driver.menu->selection_buf) == 0)
|
if (menu_list_get_size() == 0)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
file_list_get_at_offset(driver.menu->selection_buf,
|
file_list_get_at_offset(driver.menu->selection_buf,
|
||||||
@ -588,12 +587,11 @@ static int menu_common_iterate(unsigned action)
|
|||||||
driver.menu->selection_ptr - scroll_speed);
|
driver.menu->selection_ptr - scroll_speed);
|
||||||
else
|
else
|
||||||
menu_navigation_set(driver.menu,
|
menu_navigation_set(driver.menu,
|
||||||
file_list_get_size(driver.menu->selection_buf) - 1);
|
menu_list_get_size() - 1);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case MENU_ACTION_DOWN:
|
case MENU_ACTION_DOWN:
|
||||||
if (driver.menu->selection_ptr + scroll_speed <
|
if (driver.menu->selection_ptr + scroll_speed < (menu_list_get_size()))
|
||||||
file_list_get_size(driver.menu->selection_buf))
|
|
||||||
menu_navigation_set(driver.menu,
|
menu_navigation_set(driver.menu,
|
||||||
driver.menu->selection_ptr + scroll_speed);
|
driver.menu->selection_ptr + scroll_speed);
|
||||||
else
|
else
|
||||||
@ -609,8 +607,7 @@ static int menu_common_iterate(unsigned action)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case MENU_ACTION_RIGHT:
|
case MENU_ACTION_RIGHT:
|
||||||
if (driver.menu->selection_ptr + fast_scroll_speed <
|
if (driver.menu->selection_ptr + fast_scroll_speed < (menu_list_get_size()))
|
||||||
file_list_get_size(driver.menu->selection_buf))
|
|
||||||
menu_navigation_set(driver.menu,
|
menu_navigation_set(driver.menu,
|
||||||
driver.menu->selection_ptr + fast_scroll_speed);
|
driver.menu->selection_ptr + fast_scroll_speed);
|
||||||
else
|
else
|
||||||
|
@ -20,6 +20,7 @@
|
|||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <limits.h>
|
#include <limits.h>
|
||||||
|
|
||||||
|
#include "../menu_list.h"
|
||||||
#include "../menu_common.h"
|
#include "../menu_common.h"
|
||||||
#include "../menu_driver.h"
|
#include "../menu_driver.h"
|
||||||
#include "menu_display.h"
|
#include "menu_display.h"
|
||||||
@ -240,12 +241,12 @@ static void glui_frame(void)
|
|||||||
if (driver.menu->selection_ptr >= glui->term_height / 2)
|
if (driver.menu->selection_ptr >= glui->term_height / 2)
|
||||||
begin = driver.menu->selection_ptr - glui->term_height / 2;
|
begin = driver.menu->selection_ptr - glui->term_height / 2;
|
||||||
end = (driver.menu->selection_ptr + glui->term_height <=
|
end = (driver.menu->selection_ptr + glui->term_height <=
|
||||||
file_list_get_size(driver.menu->selection_buf)) ?
|
menu_list_get_size()) ?
|
||||||
driver.menu->selection_ptr + glui->term_height :
|
driver.menu->selection_ptr + glui->term_height :
|
||||||
file_list_get_size(driver.menu->selection_buf);
|
menu_list_get_size();
|
||||||
|
|
||||||
/* Do not scroll if all items are visible. */
|
/* Do not scroll if all items are visible. */
|
||||||
if (file_list_get_size(driver.menu->selection_buf) <= glui->term_height)
|
if (menu_list_get_size() <= glui->term_height)
|
||||||
begin = 0;
|
begin = 0;
|
||||||
|
|
||||||
if (end - begin > glui->term_height)
|
if (end - begin > glui->term_height)
|
||||||
|
@ -22,6 +22,7 @@
|
|||||||
#include <limits.h>
|
#include <limits.h>
|
||||||
|
|
||||||
#include "../menu_driver.h"
|
#include "../menu_driver.h"
|
||||||
|
#include "../menu_list.h"
|
||||||
#include "../menu_common.h"
|
#include "../menu_common.h"
|
||||||
#include "../../../general.h"
|
#include "../../../general.h"
|
||||||
#include "../../../config.def.h"
|
#include "../../../config.def.h"
|
||||||
@ -278,12 +279,12 @@ static void rgui_render(void)
|
|||||||
if (driver.menu->selection_ptr >= RGUI_TERM_HEIGHT / 2)
|
if (driver.menu->selection_ptr >= RGUI_TERM_HEIGHT / 2)
|
||||||
begin = driver.menu->selection_ptr - RGUI_TERM_HEIGHT / 2;
|
begin = driver.menu->selection_ptr - RGUI_TERM_HEIGHT / 2;
|
||||||
end = (driver.menu->selection_ptr + RGUI_TERM_HEIGHT <=
|
end = (driver.menu->selection_ptr + RGUI_TERM_HEIGHT <=
|
||||||
file_list_get_size(driver.menu->selection_buf)) ?
|
menu_list_get_size()) ?
|
||||||
driver.menu->selection_ptr + RGUI_TERM_HEIGHT :
|
driver.menu->selection_ptr + RGUI_TERM_HEIGHT :
|
||||||
file_list_get_size(driver.menu->selection_buf);
|
menu_list_get_size();
|
||||||
|
|
||||||
/* Do not scroll if all items are visible. */
|
/* Do not scroll if all items are visible. */
|
||||||
if (file_list_get_size(driver.menu->selection_buf) <= RGUI_TERM_HEIGHT)
|
if (menu_list_get_size() <= RGUI_TERM_HEIGHT)
|
||||||
begin = 0;
|
begin = 0;
|
||||||
|
|
||||||
if (end - begin > RGUI_TERM_HEIGHT)
|
if (end - begin > RGUI_TERM_HEIGHT)
|
||||||
|
@ -142,11 +142,11 @@ static void rmenu_render(void)
|
|||||||
begin = (menu->selection_ptr >= (ENTRIES_HEIGHT / 2)) ?
|
begin = (menu->selection_ptr >= (ENTRIES_HEIGHT / 2)) ?
|
||||||
(menu->selection_ptr - (ENTRIES_HEIGHT / 2)) : 0;
|
(menu->selection_ptr - (ENTRIES_HEIGHT / 2)) : 0;
|
||||||
end = ((menu->selection_ptr + ENTRIES_HEIGHT) <=
|
end = ((menu->selection_ptr + ENTRIES_HEIGHT) <=
|
||||||
file_list_get_size(menu->selection_buf)) ?
|
menu_list_get_size()) ?
|
||||||
menu->selection_ptr + ENTRIES_HEIGHT :
|
menu->selection_ptr + ENTRIES_HEIGHT :
|
||||||
file_list_get_size(menu->selection_buf);
|
menu_list_get_size();
|
||||||
|
|
||||||
if (file_list_get_size(menu->selection_buf) <= ENTRIES_HEIGHT)
|
if (menu_list_get_size() <= ENTRIES_HEIGHT)
|
||||||
begin = 0;
|
begin = 0;
|
||||||
|
|
||||||
if (end - begin > ENTRIES_HEIGHT)
|
if (end - begin > ENTRIES_HEIGHT)
|
||||||
|
@ -365,7 +365,7 @@ static void rmenu_xui_render(void)
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
begin = driver.menu->selection_ptr;
|
begin = driver.menu->selection_ptr;
|
||||||
end = file_list_get_size(driver.menu->selection_buf);
|
end = menu_list_get_size();
|
||||||
|
|
||||||
rmenu_xui_render_background();
|
rmenu_xui_render_background();
|
||||||
|
|
||||||
|
@ -20,6 +20,7 @@
|
|||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <limits.h>
|
#include <limits.h>
|
||||||
|
|
||||||
|
#include "../menu_list.h"
|
||||||
#include "../menu_common.h"
|
#include "../menu_common.h"
|
||||||
#include "../menu_driver.h"
|
#include "../menu_driver.h"
|
||||||
#include "menu_display.h"
|
#include "menu_display.h"
|
||||||
@ -354,7 +355,7 @@ static void xmb_selection_pointer_changed(void)
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
current = driver.menu->selection_ptr;
|
current = driver.menu->selection_ptr;
|
||||||
end = file_list_get_size(driver.menu->selection_buf);
|
end = menu_list_get_size();
|
||||||
|
|
||||||
for (i = 0; i < end; i++)
|
for (i = 0; i < end; i++)
|
||||||
{
|
{
|
||||||
@ -392,7 +393,7 @@ static void xmb_populate_entries(void *data, const char *path,
|
|||||||
if (!xmb)
|
if (!xmb)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
xmb->depth = file_list_get_size(driver.menu->menu_stack);
|
xmb->depth = menu_list_get_stack_size();
|
||||||
|
|
||||||
if (xmb->depth > xmb->old_depth)
|
if (xmb->depth > xmb->old_depth)
|
||||||
{
|
{
|
||||||
@ -451,7 +452,7 @@ static void xmb_frame(void)
|
|||||||
xmb_draw_text(title_msg, xmb->title_margin_left,
|
xmb_draw_text(title_msg, xmb->title_margin_left,
|
||||||
gl->win_height - xmb->title_margin_top/2, 1, 1);
|
gl->win_height - xmb->title_margin_top/2, 1, 1);
|
||||||
|
|
||||||
end = file_list_get_size(driver.menu->selection_buf);
|
end = menu_list_get_size();
|
||||||
current = driver.menu->selection_ptr;
|
current = driver.menu->selection_ptr;
|
||||||
|
|
||||||
for (i = 0; i < end; i++)
|
for (i = 0; i < end; i++)
|
||||||
|
@ -38,6 +38,20 @@ end:
|
|||||||
file_list_free(list);
|
file_list_free(list);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
size_t menu_list_get_stack_size(void)
|
||||||
|
{
|
||||||
|
if (!driver.menu)
|
||||||
|
return 0;
|
||||||
|
return file_list_get_size(driver.menu->menu_stack);
|
||||||
|
}
|
||||||
|
|
||||||
|
size_t menu_list_get_size(void)
|
||||||
|
{
|
||||||
|
if (!driver.menu)
|
||||||
|
return 0;
|
||||||
|
return file_list_get_size(driver.menu->selection_buf);
|
||||||
|
}
|
||||||
|
|
||||||
void menu_list_flush_stack(file_list_t *list,
|
void menu_list_flush_stack(file_list_t *list,
|
||||||
unsigned final_type)
|
unsigned final_type)
|
||||||
{
|
{
|
||||||
|
@ -38,6 +38,10 @@ void menu_list_pop_stack(file_list_t *list);
|
|||||||
void menu_list_pop_stack_by_needle(file_list_t *list,
|
void menu_list_pop_stack_by_needle(file_list_t *list,
|
||||||
const char *needle);
|
const char *needle);
|
||||||
|
|
||||||
|
size_t menu_list_get_stack_size(void);
|
||||||
|
|
||||||
|
size_t menu_list_get_size(void);
|
||||||
|
|
||||||
void menu_list_clear(file_list_t *list);
|
void menu_list_clear(file_list_t *list);
|
||||||
|
|
||||||
void menu_list_push(file_list_t *list,
|
void menu_list_push(file_list_t *list,
|
||||||
|
@ -21,6 +21,7 @@
|
|||||||
#include <limits.h>
|
#include <limits.h>
|
||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
#include "menu_common.h"
|
#include "menu_common.h"
|
||||||
|
#include "menu_list.h"
|
||||||
#include "menu_navigation.h"
|
#include "menu_navigation.h"
|
||||||
|
|
||||||
void menu_navigation_clear(menu_handle_t *menu, bool pending_push)
|
void menu_navigation_clear(menu_handle_t *menu, bool pending_push)
|
||||||
@ -57,7 +58,7 @@ void menu_navigation_set(menu_handle_t *menu, size_t i)
|
|||||||
|
|
||||||
void menu_navigation_set_last(menu_handle_t *menu)
|
void menu_navigation_set_last(menu_handle_t *menu)
|
||||||
{
|
{
|
||||||
menu->selection_ptr = file_list_get_size(menu->selection_buf) - 1;
|
menu->selection_ptr = menu_list_get_size() - 1;
|
||||||
|
|
||||||
if (driver.menu_ctx && driver.menu_ctx->navigation_set_last)
|
if (driver.menu_ctx && driver.menu_ctx->navigation_set_last)
|
||||||
driver.menu_ctx->navigation_set_last(menu);
|
driver.menu_ctx->navigation_set_last(menu);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user