update Find_file_in_fileselector() to return -1 when not found
This commit is contained in:
parent
16799113fc
commit
12050cd068
@ -1314,7 +1314,8 @@ void Button_Skins(int btn)
|
||||
Sort_list_of_files(&Font_files_list);
|
||||
|
||||
selected_font = Find_file_in_fileselector(&Font_files_list, Config.Font_file);
|
||||
|
||||
if (selected_font < 0)
|
||||
selected_font = 0;
|
||||
|
||||
// --------------------------------------------------------------
|
||||
|
||||
@ -1340,6 +1341,8 @@ void Button_Skins(int btn)
|
||||
Draw_one_skin_name, 2); // 4
|
||||
|
||||
skin_list->Cursor_position = Find_file_in_fileselector(&Skin_files_list, Config.Skin_file);
|
||||
if (skin_list->Cursor_position < 0)
|
||||
skin_list->Cursor_position = 0;
|
||||
|
||||
// Buttons to choose a font
|
||||
font_dropdown = Window_set_dropdown_button(172, 43, 104, 11, 0, Get_item_by_index(&Font_files_list,selected_font)->Short_name,1,0,1,RIGHT_SIDE|LEFT_SIDE,0); // 5
|
||||
|
||||
@ -2309,6 +2309,8 @@ void Highlight_script(T_Fileselector *selector, T_List_button *list, const char
|
||||
short index;
|
||||
|
||||
index=Find_file_in_fileselector(selector, selected_file);
|
||||
if (index < 0)
|
||||
index = 0; // 1st item if selected_file is not found
|
||||
Locate_list_item(list, index);
|
||||
}
|
||||
|
||||
|
||||
@ -1386,13 +1386,13 @@ short Find_file_in_fileselector(T_Fileselector *list, const char * fname)
|
||||
{
|
||||
T_Fileselector_item * item;
|
||||
short index;
|
||||
short close_match=0;
|
||||
short close_match = -1;
|
||||
|
||||
index=0;
|
||||
for (item=list->First; item!=NULL; item=item->Next)
|
||||
{
|
||||
if (strcmp(item->Full_name,fname)==0)
|
||||
return index;
|
||||
return index; // exact match
|
||||
if (strcasecmp(item->Full_name,fname)==0)
|
||||
close_match=index;
|
||||
|
||||
@ -1402,7 +1402,10 @@ short Find_file_in_fileselector(T_Fileselector *list, const char * fname)
|
||||
return close_match;
|
||||
}
|
||||
|
||||
void Highlight_file(short index)
|
||||
/// Set the position and index of the file list according
|
||||
/// to the selected index
|
||||
/// @param index index of selected file
|
||||
static void Highlight_file(short index)
|
||||
{
|
||||
|
||||
if ((Filelist.Nb_elements<=10) || (index<5))
|
||||
@ -1685,7 +1688,8 @@ byte Button_Load_or_Save(T_Selector_settings *settings, byte load, T_IO_Context
|
||||
|
||||
if (!load)
|
||||
{
|
||||
Highlight_file(Find_file_in_fileselector(&Filelist, context->File_name));
|
||||
short pos = Find_file_in_fileselector(&Filelist, context->File_name);
|
||||
Highlight_file((pos >= 0) ? pos : 0);
|
||||
Prepare_and_display_filelist(Selector->Position,Selector->Offset,file_scroller);
|
||||
|
||||
// On initialise le nom de fichier à celui en cours et non pas celui sous
|
||||
@ -1885,15 +1889,15 @@ byte Button_Load_or_Save(T_Selector_settings *settings, byte load, T_IO_Context
|
||||
if (savename != NULL)
|
||||
{
|
||||
// attempt to find the file name in new list
|
||||
int pos=Find_file_in_fileselector(&Filelist, savename);
|
||||
if (pos!=0)
|
||||
short pos=Find_file_in_fileselector(&Filelist, savename);
|
||||
if (pos >= 0)
|
||||
{
|
||||
Highlight_file(pos);
|
||||
Prepare_and_display_filelist(Selector->Position,Selector->Offset,file_scroller);
|
||||
}
|
||||
// If the file is (still present) or it's a name with new
|
||||
// extension, set it as the proposed file name.
|
||||
if (pos!=0 || !load)
|
||||
if (pos >= 0 || !load)
|
||||
{
|
||||
strcpy(Selector_filename, savename);
|
||||
memcpy(Selector_filename_unicode, Selector_filename_unicode_save, sizeof(Selector_filename_unicode_save));
|
||||
@ -2265,7 +2269,8 @@ byte Button_Load_or_Save(T_Selector_settings *settings, byte load, T_IO_Context
|
||||
Read_list_of_files(&Filelist, Selector->Format_filter);
|
||||
Sort_list_of_files(&Filelist);
|
||||
// Set the fileselector bar on the directory we're coming from
|
||||
Highlight_file(Find_file_in_fileselector(&Filelist, previous_directory));
|
||||
pos = Find_file_in_fileselector(&Filelist, previous_directory);
|
||||
Highlight_file((pos >= 0) ? pos : 0);
|
||||
// display the 1st visible files
|
||||
Prepare_and_display_filelist(Selector->Position,Selector->Offset,file_scroller);
|
||||
Display_cursor();
|
||||
|
||||
@ -72,6 +72,11 @@ T_Fileselector_item * Get_item_by_index(T_Fileselector *list, unsigned short ind
|
||||
|
||||
void Read_list_of_drives(T_Fileselector *list, byte name_length);
|
||||
|
||||
/// Look for a file name in a file selector list
|
||||
/// @param list The file selector list
|
||||
/// @param fname The file name to search for
|
||||
/// @return the index of the file
|
||||
/// @return -1 if the file name was not found
|
||||
short Find_file_in_fileselector(T_Fileselector *list, const char * fname);
|
||||
|
||||
void Locate_list_item(T_List_button * list, short selected_item);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user