diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2008-01-11 21:03:35 +0000 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2008-01-11 21:03:35 +0000 |
commit | a56b852a2b325468f893758825d4d0a4c2bcd215 (patch) | |
tree | 8b199b19b71330ab34c278955c694d7b64f883fa /gtk2_ardour/new_session_dialog.cc | |
parent | 5c3ba06c8dc8f695f3bacf929e0b598cad83b04c (diff) |
fixes for region menus; fixes for new session dialog/Gnome VFS assertion
git-svn-id: svn://localhost/ardour2/branches/2.0-ongoing@2897 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour/new_session_dialog.cc')
-rw-r--r-- | gtk2_ardour/new_session_dialog.cc | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/gtk2_ardour/new_session_dialog.cc b/gtk2_ardour/new_session_dialog.cc index adc36df8b6..a5accb208e 100644 --- a/gtk2_ardour/new_session_dialog.cc +++ b/gtk2_ardour/new_session_dialog.cc @@ -539,7 +539,26 @@ NewSessionDialog::set_session_name (const Glib::ustring& name) void NewSessionDialog::set_session_folder(const Glib::ustring& dir) { - m_folder->set_current_folder (dir); + Glib::ustring realdir = dir; + + /* GtkFileChooser doesn't accept non-absolute pathnames without vomiting */ + + if (!Glib::path_is_absolute (realdir)) { + if (realdir.length() == 1 && realdir[0] == '.') { + realdir.replace (0, 1, Glib::get_current_dir()); + } else if (realdir.length() > 1 && realdir[0] == '.' && realdir[1] != '.') { + realdir.replace (0, 1, Glib::get_current_dir()); + } else if (realdir.length() == 2 && realdir[0] == '.' && realdir[1] == '.') { + realdir.replace (0, 2, Glib::path_get_dirname (Glib::get_current_dir())); + } else if (realdir.length() > 2 && realdir[0] == '.' && realdir[1] == '.') { + realdir.replace (0, 2, Glib::path_get_dirname (Glib::get_current_dir())); + } else { + error << string_compose (_("Non-absolute path \"%1\" not usable - ignored"), realdir) << endmsg; + return; + } + } + + m_folder->set_current_folder (realdir); } std::string |