diff options
| author | Manolo Gouy <Manolo> | 2014-06-20 13:43:17 +0000 |
|---|---|---|
| committer | Manolo Gouy <Manolo> | 2014-06-20 13:43:17 +0000 |
| commit | 37f77a271c4bbccfa23a63bd786eff7b6749b320 (patch) | |
| tree | ab70efd068ccf5caa6c340e4aa6711d5c0ba9b0c /src/Fl_Native_File_Chooser_GTK.cxx | |
| parent | 703045f5b1cce4b9d4a6c62bfac7758b2ceef392 (diff) | |
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
Diffstat (limited to 'src/Fl_Native_File_Chooser_GTK.cxx')
| -rw-r--r-- | src/Fl_Native_File_Chooser_GTK.cxx | 17 |
1 files changed, 16 insertions, 1 deletions
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(); |
