Change the way we change to bookmarked directories
fixes http://pulkomandy.tk/projects/GrafX2/ticket/12
This commit is contained in:
parent
c65f9f8903
commit
44f24b3508
@ -1566,11 +1566,11 @@ byte Button_Load_or_Save(T_Selector_settings *settings, byte load, T_IO_Context
|
|||||||
byte has_clicked_ok=0;// Indique si on a clické sur Load ou Save ou sur
|
byte has_clicked_ok=0;// Indique si on a clické sur Load ou Save ou sur
|
||||||
//un bouton enclenchant Load ou Save juste après.
|
//un bouton enclenchant Load ou Save juste après.
|
||||||
byte initial_back_color; // preview destroys it (how nice)
|
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];
|
char save_filename[MAX_PATH_CHARACTERS];
|
||||||
word save_filename_unicode[MAX_PATH_CHARACTERS];
|
word save_filename_unicode[MAX_PATH_CHARACTERS];
|
||||||
char initial_comment[COMMENT_SIZE+1];
|
char initial_comment[COMMENT_SIZE+1];
|
||||||
short window_shortcut;
|
short window_shortcut;
|
||||||
|
const char * directory_to_change_to = NULL;
|
||||||
|
|
||||||
Selector=settings;
|
Selector=settings;
|
||||||
|
|
||||||
@ -1879,6 +1879,7 @@ byte Button_Load_or_Save(T_Selector_settings *settings, byte load, T_IO_Context
|
|||||||
pos_last_dot!=-1 &&
|
pos_last_dot!=-1 &&
|
||||||
Selector_filename[pos_last_dot+1]!='\0')
|
Selector_filename[pos_last_dot+1]!='\0')
|
||||||
{
|
{
|
||||||
|
GFX2_Log(GFX2_DEBUG, "extension %s => %s\n", Selector_filename + pos_last_dot + 1, Get_fileformat(Selector->Format_filter)->Default_extension);
|
||||||
strcpy(Selector_filename + pos_last_dot + 1,
|
strcpy(Selector_filename + pos_last_dot + 1,
|
||||||
Get_fileformat(Selector->Format_filter)->Default_extension);
|
Get_fileformat(Selector->Format_filter)->Default_extension);
|
||||||
Unicode_char_strlcpy(Selector_filename_unicode + pos_last_dot + 1,
|
Unicode_char_strlcpy(Selector_filename_unicode + pos_last_dot + 1,
|
||||||
@ -2078,13 +2079,11 @@ byte Button_Load_or_Save(T_Selector_settings *settings, byte load, T_IO_Context
|
|||||||
case -1: // bouton lui-même: aller au répertoire mémorisé
|
case -1: // bouton lui-même: aller au répertoire mémorisé
|
||||||
if (Config.Bookmark_directory[clicked_button-10])
|
if (Config.Bookmark_directory[clicked_button-10])
|
||||||
{
|
{
|
||||||
|
GFX2_Log(GFX2_DEBUG,"Go to bookmark %s\n", Config.Bookmark_directory[clicked_button-10]);
|
||||||
// backup the currently selected filename
|
// backup the currently selected filename
|
||||||
strncpy(save_filename, Selector_filename, sizeof(save_filename));
|
strncpy(save_filename, Selector_filename, sizeof(save_filename));
|
||||||
// simulate a click on the bookmarked directory
|
// simulate a click on the bookmarked directory
|
||||||
strncpy(Selector_filename,Config.Bookmark_directory[clicked_button-10], sizeof(Selector_filename));
|
directory_to_change_to = Config.Bookmark_directory[clicked_button-10];
|
||||||
Selector_filename[sizeof(Selector_filename)-1] = '\0';
|
|
||||||
Selected_type=1;
|
|
||||||
has_clicked_ok=1;
|
|
||||||
Reset_quicksearch();
|
Reset_quicksearch();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@ -2246,25 +2245,30 @@ byte Button_Load_or_Save(T_Selector_settings *settings, byte load, T_IO_Context
|
|||||||
Reset_quicksearch();
|
Reset_quicksearch();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (has_clicked_ok)
|
if (has_clicked_ok || (directory_to_change_to != NULL))
|
||||||
{
|
{
|
||||||
// Si c'est un répertoire, on annule "has_clicked_ok" et on passe
|
// Si c'est un répertoire, on annule "has_clicked_ok" et on passe
|
||||||
// dedans.
|
// dedans.
|
||||||
if (Selected_type!=0)
|
if (Selected_type!=0 || (directory_to_change_to != NULL))
|
||||||
{
|
{
|
||||||
Hide_cursor();
|
Hide_cursor();
|
||||||
has_clicked_ok=0;
|
has_clicked_ok=0;
|
||||||
|
|
||||||
|
if (directory_to_change_to == NULL)
|
||||||
|
directory_to_change_to = Selector_filename;
|
||||||
|
|
||||||
// We must enter the directory
|
// We must enter the directory
|
||||||
if (Change_directory(Selector_filename) == 0)
|
if (Change_directory(directory_to_change_to) == 0)
|
||||||
{
|
{
|
||||||
|
short pos;
|
||||||
|
char previous_directory[MAX_PATH_CHARACTERS]; // Répertoire d'où l'on vient après un CHDIR
|
||||||
#if defined (__MINT__)
|
#if defined (__MINT__)
|
||||||
static char path[1024]={0};
|
static char path[1024]={0};
|
||||||
char currentDrive='A';
|
char currentDrive='A';
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// save the previous current directory
|
// save the previous current directory
|
||||||
if (strcmp(Selector_filename,PARENT_DIR) != 0)
|
if (strcmp(directory_to_change_to,PARENT_DIR) != 0)
|
||||||
{
|
{
|
||||||
strcpy(previous_directory,PARENT_DIR);
|
strcpy(previous_directory,PARENT_DIR);
|
||||||
}
|
}
|
||||||
@ -2292,12 +2296,13 @@ byte Button_Load_or_Save(T_Selector_settings *settings, byte load, T_IO_Context
|
|||||||
{
|
{
|
||||||
char warn_msg[MAX_PATH_CHARACTERS];
|
char warn_msg[MAX_PATH_CHARACTERS];
|
||||||
Display_cursor();
|
Display_cursor();
|
||||||
snprintf(warn_msg, sizeof(warn_msg), "cannot chdir to \"%s\" !", Selector_filename);
|
snprintf(warn_msg, sizeof(warn_msg), "cannot chdir to \"%s\" !", directory_to_change_to);
|
||||||
Warning(warn_msg);
|
Warning(warn_msg);
|
||||||
// restore Selector_filename
|
// restore Selector_filename
|
||||||
strncpy(Selector_filename, save_filename, sizeof(Selector_filename));
|
strncpy(Selector_filename, save_filename, sizeof(Selector_filename));
|
||||||
Error(0);
|
Error(0);
|
||||||
}
|
}
|
||||||
|
directory_to_change_to = NULL;
|
||||||
}
|
}
|
||||||
else // Sinon on essaye de charger ou sauver le fichier
|
else // Sinon on essaye de charger ou sauver le fichier
|
||||||
{
|
{
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user