mirror of
https://github.com/RaySollium99/libpicofe.git
synced 2025-09-07 07:38:04 -04:00
revisit file selector
- display help - add draw callback for window resizing - fix small memory leak
This commit is contained in:
parent
d5a43fbd97
commit
bf1b3e327f
1 changed files with 17 additions and 6 deletions
23
menu.c
23
menu.c
|
@ -994,10 +994,11 @@ static int dirent_seek_char(struct dirent **namelist, int len, int sel, char c)
|
||||||
return i;
|
return i;
|
||||||
}
|
}
|
||||||
|
|
||||||
static const char *menu_loop_romsel(char *curr_path, int len,
|
static const char *menu_loop_romsel_d(char *curr_path, int len,
|
||||||
const char **filter_exts,
|
const char **filter_exts,
|
||||||
int (*extra_filter)(struct dirent **namelist, int count,
|
int (*extra_filter)(struct dirent **namelist, int count,
|
||||||
const char *basedir))
|
const char *basedir),
|
||||||
|
void (*draw_prep)(void))
|
||||||
{
|
{
|
||||||
static char rom_fname_reload[256]; // used for scratch and return
|
static char rom_fname_reload[256]; // used for scratch and return
|
||||||
char sel_fname[256];
|
char sel_fname[256];
|
||||||
|
@ -1020,13 +1021,12 @@ static const char *menu_loop_romsel(char *curr_path, int len,
|
||||||
curr_path_restore = p;
|
curr_path_restore = p;
|
||||||
snprintf(sel_fname, sizeof(sel_fname), "%s", p + 1);
|
snprintf(sel_fname, sizeof(sel_fname), "%s", p + 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (rom_fname_reload[0] == 0)
|
|
||||||
show_help = 2;
|
|
||||||
}
|
}
|
||||||
|
show_help = 2;
|
||||||
|
|
||||||
rescan:
|
rescan:
|
||||||
if (namelist != NULL) {
|
if (namelist != NULL) {
|
||||||
|
n += !n;
|
||||||
while (n-- > 0)
|
while (n-- > 0)
|
||||||
free(namelist[n]);
|
free(namelist[n]);
|
||||||
free(namelist);
|
free(namelist);
|
||||||
|
@ -1099,6 +1099,8 @@ rescan:
|
||||||
|
|
||||||
for (;;)
|
for (;;)
|
||||||
{
|
{
|
||||||
|
if (draw_prep != NULL)
|
||||||
|
draw_prep();
|
||||||
draw_dirlist(curr_path, namelist, n, sel, show_help);
|
draw_dirlist(curr_path, namelist, n, sel, show_help);
|
||||||
inp = in_menu_wait(PBTN_UP|PBTN_DOWN|PBTN_LEFT|PBTN_RIGHT
|
inp = in_menu_wait(PBTN_UP|PBTN_DOWN|PBTN_LEFT|PBTN_RIGHT
|
||||||
| PBTN_L|PBTN_R|PBTN_MA2|PBTN_MA3|PBTN_MOK|PBTN_MBACK
|
| PBTN_L|PBTN_R|PBTN_MA2|PBTN_MA3|PBTN_MOK|PBTN_MBACK
|
||||||
|
@ -1107,6 +1109,7 @@ rescan:
|
||||||
g_menu_filter_off = !g_menu_filter_off;
|
g_menu_filter_off = !g_menu_filter_off;
|
||||||
snprintf(sel_fname, sizeof(sel_fname), "%s",
|
snprintf(sel_fname, sizeof(sel_fname), "%s",
|
||||||
namelist[sel]->d_name);
|
namelist[sel]->d_name);
|
||||||
|
show_help = 2;
|
||||||
goto rescan;
|
goto rescan;
|
||||||
}
|
}
|
||||||
int last = n ? n-1 : 0;
|
int last = n ? n-1 : 0;
|
||||||
|
@ -1156,7 +1159,7 @@ rescan:
|
||||||
strcat(newdir, "/");
|
strcat(newdir, "/");
|
||||||
strcat(newdir, namelist[sel]->d_name);
|
strcat(newdir, namelist[sel]->d_name);
|
||||||
}
|
}
|
||||||
ret = menu_loop_romsel(newdir, newlen, filter_exts, extra_filter);
|
ret = menu_loop_romsel_d(newdir, newlen, filter_exts, extra_filter, draw_prep);
|
||||||
free(newdir);
|
free(newdir);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -1190,6 +1193,14 @@ rescan:
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static const char *menu_loop_romsel(char *curr_path, int len,
|
||||||
|
const char **filter_exts,
|
||||||
|
int (*extra_filter)(struct dirent **namelist, int count,
|
||||||
|
const char *basedir))
|
||||||
|
{
|
||||||
|
return menu_loop_romsel_d(curr_path, len, filter_exts, extra_filter, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
// ------------ savestate loader ------------
|
// ------------ savestate loader ------------
|
||||||
|
|
||||||
#define STATE_SLOT_COUNT 10
|
#define STATE_SLOT_COUNT 10
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue