From 83d2b5de7a4d194905c86e6179d952ec74861af5 Mon Sep 17 00:00:00 2001 From: Thomas Bernard Date: Sat, 8 Dec 2018 11:21:12 +0100 Subject: [PATCH] Properly set Selected_type when entering Button_Load_or_Save() fixes bug #91 http://pulkomandy.tk/projects/GrafX2/ticket/91 --- src/filesel.c | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/src/filesel.c b/src/filesel.c index 677056bd..454e3bef 100644 --- a/src/filesel.c +++ b/src/filesel.c @@ -1309,8 +1309,9 @@ void Print_filename_in_fileselector(void) Update_window_area(82,48,27*8,8); } -static int Selected_type; // Utilisé pour mémoriser le type d'entrée choisi - // dans le selecteur de fichier. +/// Type of the selected entry in the file selector. +/// 0 = file, 1 = directory +static int Selected_type; /// Displays the file list with sliders, etc. /// 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); Highlight_file((pos >= 0) ? pos : 0); + Selected_type = (pos >= 0) ? 0 : 1; 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 @@ -1821,30 +1823,34 @@ byte Button_Load_or_Save(T_Selector_settings *settings, byte load, T_IO_Context { if (temp!=Selector->Offset) { - // On met à jour le décalage + // first click on an item. + // update offset 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); - // On affiche le nouveau nom de fichier + // display the new filename Print_filename_in_fileselector(); - // On affiche à nouveau la liste + // and update list Display_file_list(&Filelist, Selector->Position,Selector->Offset); - // On vient de changer de nom de fichier, donc on doit s'appreter - // a rafficher une preview + // A new file is selected so a new preview is needed New_preview_is_needed=1; Reset_quicksearch(); - } else { + // This is the second click on the same item => Double click + // 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 // certains cas, on risque de sauvegarder avec le nom du fichier // actuel au lieu de changer de répertoire. - if (Selector->Position+Selector->OffsetPosition+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); + } has_clicked_ok=1; New_preview_is_needed=1;