From 9fb6d650b59719e994f75b652046c5318c133a66 Mon Sep 17 00:00:00 2001 From: Thomas Bernard Date: Tue, 13 Feb 2018 22:46:49 +0100 Subject: [PATCH] pass unicode name when clicking Load or Save button --- src/buttons.c | 6 ++++++ src/filesel.c | 7 ++++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/src/buttons.c b/src/buttons.c index 3475457c..4ed77dfc 100644 --- a/src/buttons.c +++ b/src/buttons.c @@ -639,6 +639,7 @@ byte Button_Quit_local_function(void) Display_cursor(); Init_context_layered_image(&save_context, Main.backups->Pages->Filename, Main.backups->Pages->File_directory); + save_context.File_name_unicode = Main.backups->Pages->Filename_unicode; Save_image(&save_context); Destroy_context(&save_context); @@ -3415,6 +3416,7 @@ void Save_picture(enum CONTEXT_TYPE type) byte old_cursor_shape; T_IO_Context save_context; static char filename [MAX_PATH_CHARACTERS]; + static word filename_unicode[MAX_PATH_CHARACTERS]; static char directory[MAX_PATH_CHARACTERS]; T_Selector_settings * selector; @@ -3422,6 +3424,7 @@ void Save_picture(enum CONTEXT_TYPE type) { strcpy(filename, Main.backups->Pages->Filename); strcpy(directory, Main.backups->Pages->File_directory); + Unicode_strlcpy(filename_unicode, Main.backups->Pages->Filename_unicode, MAX_PATH_CHARACTERS); Init_context_layered_image(&save_context, filename, directory); save_context.Format = Main.fileformat; selector = &Main.selector; @@ -3430,6 +3433,7 @@ void Save_picture(enum CONTEXT_TYPE type) { strcpy(filename, Brush_filename); strcpy(directory, Brush_file_directory); + filename_unicode[0] = 0; Init_context_brush(&save_context, filename, directory); save_context.Format = Brush_fileformat; selector = &Brush_selector; @@ -3445,6 +3449,7 @@ void Save_picture(enum CONTEXT_TYPE type) dotpos = filename + strlen(filename); strcpy(dotpos, ".pal"); + filename_unicode[0] = 0; strcpy(directory, Main.backups->Pages->File_directory); Init_context_layered_image(&save_context, filename, directory); save_context.Type = CONTEXT_PALETTE; @@ -3456,6 +3461,7 @@ void Save_picture(enum CONTEXT_TYPE type) else return; + save_context.File_name_unicode = filename_unicode; confirm=Button_Load_or_Save(selector, 0, &save_context); if (confirm && File_exists(save_context.File_name)) diff --git a/src/filesel.c b/src/filesel.c index dc40ef5f..fb2edeb8 100644 --- a/src/filesel.c +++ b/src/filesel.c @@ -1534,6 +1534,7 @@ byte Button_Load_or_Save(T_Selector_settings *settings, byte load, T_IO_Context byte initial_back_color; // preview destroys it (how nice) char previous_directory[MAX_PATH_CHARACTERS]; // Répertoire d'où l'on vient après un CHDIR char save_filename[MAX_PATH_CHARACTERS]; + word save_filename_unicode[MAX_PATH_CHARACTERS]; char initial_comment[COMMENT_SIZE+1]; short window_shortcut; @@ -1668,7 +1669,7 @@ byte Button_Load_or_Save(T_Selector_settings *settings, byte load, T_IO_Context // On initialise le nom de fichier à celui en cours et non pas celui sous // la barre de sélection strcpy(Selector_filename,context->File_name); - Selector_filename_unicode[0] = 0; // TODO : retrieve unicode filename + Unicode_strlcpy(Selector_filename_unicode, context->File_name_unicode, 256); // On affiche le nouveau nom de fichier Print_filename_in_fileselector(); } @@ -1888,9 +1889,11 @@ byte Button_Load_or_Save(T_Selector_settings *settings, byte load, T_IO_Context case 8 : // Saisie du nom de fichier { char filename_ansi[256]; + word filename_unicode[256]; // Save the filename strcpy(save_filename, Selector_filename); + Unicode_strlcpy(save_filename_unicode, Selector_filename_unicode, MAX_PATH_CHARACTERS); // Check if the selected entry is a drive/directory : // in, this case, clear the filename if (Filelist.Nb_elements>0) @@ -1902,6 +1905,7 @@ byte Button_Load_or_Save(T_Selector_settings *settings, byte load, T_IO_Context Selector_filename[0]='\0'; } strncpy(filename_ansi, Selector_filename, sizeof(filename_ansi)); + Unicode_strlcpy(filename_unicode, Selector_filename_unicode, sizeof(filename_unicode)/sizeof(word)); #ifdef ENABLE_FILENAMES_ICONV { /* convert from UTF8 to ANSI */ char * input = (char *)Selector_filename; @@ -1978,6 +1982,7 @@ byte Button_Load_or_Save(T_Selector_settings *settings, byte load, T_IO_Context { // Restore the old filename strcpy(Selector_filename, save_filename); + Unicode_strlcpy(Selector_filename_unicode, save_filename_unicode, sizeof(Selector_filename_unicode)/sizeof(word)); Print_filename_in_fileselector(); } Display_cursor();