Properly set Selected_type when entering Button_Load_or_Save()

fixes bug #91 http://pulkomandy.tk/projects/GrafX2/ticket/91
This commit is contained in:
Thomas Bernard 2018-12-08 11:21:12 +01:00
parent e74365df01
commit 83d2b5de7a
No known key found for this signature in database
GPG Key ID: 0FF11B67A5C0863C

View File

@ -1309,8 +1309,9 @@ void Print_filename_in_fileselector(void)
Update_window_area(82,48,27*8,8); Update_window_area(82,48,27*8,8);
} }
static int Selected_type; // Utilisé pour mémoriser le type d'entrée choisi /// Type of the selected entry in the file selector.
// dans le selecteur de fichier. /// 0 = file, 1 = directory
static int Selected_type;
/// Displays the file list with sliders, etc. /// Displays the file list with sliders, etc.
/// also optionally updates the current file name (Selector_filename) /// also optionally updates the current file name (Selector_filename)
@ -1708,6 +1709,7 @@ byte Button_Load_or_Save(T_Selector_settings *settings, byte load, T_IO_Context
{ {
short pos = Find_file_in_fileselector(&Filelist, context->File_name); short pos = Find_file_in_fileselector(&Filelist, context->File_name);
Highlight_file((pos >= 0) ? pos : 0); Highlight_file((pos >= 0) ? pos : 0);
Selected_type = (pos >= 0) ? 0 : 1;
Prepare_and_display_filelist(Selector->Position,Selector->Offset,file_scroller,0); Prepare_and_display_filelist(Selector->Position,Selector->Offset,file_scroller,0);
// On initialise le nom de fichier à celui en cours et non pas celui sous // On initialise le nom de fichier à celui en cours et non pas celui sous
@ -1821,30 +1823,34 @@ byte Button_Load_or_Save(T_Selector_settings *settings, byte load, T_IO_Context
{ {
if (temp!=Selector->Offset) if (temp!=Selector->Offset)
{ {
// On met à jour le décalage // first click on an item.
// update offset
Selector->Offset=temp; Selector->Offset=temp;
// On récupére le nom du schmilblick à "accéder" // get item name and details
Get_selected_item(&Filelist, Selector->Position,Selector->Offset,Selector_filename,Selector_filename_unicode,&Selected_type); Get_selected_item(&Filelist, Selector->Position,Selector->Offset,Selector_filename,Selector_filename_unicode,&Selected_type);
// On affiche le nouveau nom de fichier // display the new filename
Print_filename_in_fileselector(); Print_filename_in_fileselector();
// On affiche à nouveau la liste // and update list
Display_file_list(&Filelist, Selector->Position,Selector->Offset); Display_file_list(&Filelist, Selector->Position,Selector->Offset);
// On vient de changer de nom de fichier, donc on doit s'appreter // A new file is selected so a new preview is needed
// a rafficher une preview
New_preview_is_needed=1; New_preview_is_needed=1;
Reset_quicksearch(); Reset_quicksearch();
} }
else else
{ {
// This is the second click on the same item => Double click
// En sauvegarde, si on a double-clické sur un répertoire, il // En sauvegarde, si on a double-clické sur un répertoire, il
// faut mettre le nom de fichier au nom du répertoire. Sinon, dans // faut mettre le nom de fichier au nom du répertoire. Sinon, dans
// certains cas, on risque de sauvegarder avec le nom du fichier // certains cas, on risque de sauvegarder avec le nom du fichier
// actuel au lieu de changer de répertoire. // actuel au lieu de changer de répertoire.
if (Selector->Position+Selector->Offset<Filelist.Nb_directories) if (Selector->Position+Selector->Offset < Filelist.Nb_directories)
{ // clicked on a directory
// retrieve again the item name
Get_selected_item(&Filelist, Selector->Position,Selector->Offset,Selector_filename,Selector_filename_unicode,&Selected_type); Get_selected_item(&Filelist, Selector->Position,Selector->Offset,Selector_filename,Selector_filename_unicode,&Selected_type);
}
has_clicked_ok=1; has_clicked_ok=1;
New_preview_is_needed=1; New_preview_is_needed=1;