From 37f77a271c4bbccfa23a63bd786eff7b6749b320 Mon Sep 17 00:00:00 2001 From: Manolo Gouy Date: Fri, 20 Jun 2014 13:43:17 +0000 Subject: GTK file chooser: honor request of current directory for the file chooser. git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3@10202 ea41ed52-d2ee-0310-a9c1-e6b18d33e121 --- src/Fl_Native_File_Chooser_GTK.cxx | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/Fl_Native_File_Chooser_GTK.cxx b/src/Fl_Native_File_Chooser_GTK.cxx index 2386f3446..11516aec3 100644 --- a/src/Fl_Native_File_Chooser_GTK.cxx +++ b/src/Fl_Native_File_Chooser_GTK.cxx @@ -405,6 +405,8 @@ int Fl_GTK_File_Chooser::fl_gtk_chooser_wrapper() { int result = 1; static int have_gtk_init = 0; + char *p; + if(!have_gtk_init) { have_gtk_init = -1; int ac = 0; @@ -475,12 +477,25 @@ int Fl_GTK_File_Chooser::fl_gtk_chooser_wrapper() } if (_directory && _directory[0]) fl_gtk_file_chooser_set_current_folder((GtkFileChooser *)gtkw_ptr, _directory); + else if (_preset_file) { + if (fl_filename_isdir(_preset_file)) { + fl_gtk_file_chooser_set_current_folder((GtkFileChooser *)gtkw_ptr, _preset_file); + } + else if (strrchr(_preset_file, '/')) { + char *dir = strdup(_preset_file); + p = strrchr(dir, '/'); + if (p == dir) p++; + *p = 0; + fl_gtk_file_chooser_set_current_folder((GtkFileChooser *)gtkw_ptr, dir); + free(dir); + } + } GtkFileFilter **filter_tab = NULL; if (_parsedfilt) { filter_tab = new GtkFileFilter*[_nfilters]; char *filter = strdup(_parsedfilt); - char *p = strtok(filter, "\t"); + p = strtok(filter, "\t"); int count = 0; while (p) { filter_tab[count] = fl_gtk_file_filter_new(); -- cgit v1.2.3