mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-01 00:13:24 +00:00
Fix broken default filename for save-as
The existing code set the filename to the full path of the last input file and didn't set the path at all. Instead we now split the existing filename into its path and file component and set up the choser accordingly. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
parent
21fd73515f
commit
415383d65e
1 changed files with 22 additions and 1 deletions
23
gtk-gui.c
23
gtk-gui.c
|
@ -172,10 +172,29 @@ static void file_open(GtkWidget *w, gpointer data)
|
|||
gtk_widget_destroy(dialog);
|
||||
}
|
||||
|
||||
/* return the path and the file component contained in the full path */
|
||||
static char *path_and_file(char *pathin, char **fileout) {
|
||||
char *slash = pathin, *next;
|
||||
|
||||
if (! pathin) {
|
||||
*fileout = strdup("");
|
||||
return strdup("");
|
||||
}
|
||||
while ((next = strpbrk(slash + 1, "\\/")))
|
||||
slash = next;
|
||||
if (pathin != slash)
|
||||
slash++;
|
||||
*fileout = strdup(slash);
|
||||
return strndup(pathin, slash - pathin);
|
||||
}
|
||||
|
||||
static void file_save_as(GtkWidget *w, gpointer data)
|
||||
{
|
||||
GtkWidget *dialog;
|
||||
char *filename = NULL;
|
||||
char *current_file;
|
||||
char *current_dir;
|
||||
|
||||
dialog = gtk_file_chooser_dialog_new("Save File As",
|
||||
GTK_WINDOW(main_window),
|
||||
GTK_FILE_CHOOSER_ACTION_SAVE,
|
||||
|
@ -184,7 +203,9 @@ static void file_save_as(GtkWidget *w, gpointer data)
|
|||
NULL);
|
||||
gtk_file_chooser_set_do_overwrite_confirmation(GTK_FILE_CHOOSER(dialog), TRUE);
|
||||
|
||||
gtk_file_chooser_set_current_name(GTK_FILE_CHOOSER(dialog), existing_filename);
|
||||
current_dir = path_and_file(existing_filename, ¤t_file);
|
||||
gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(dialog), current_dir);
|
||||
gtk_file_chooser_set_current_name(GTK_FILE_CHOOSER(dialog), current_file);
|
||||
if (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT) {
|
||||
filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog));
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue