summaryrefslogtreecommitdiff
path: root/gtk2_ardour/new_session_dialog.cc
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2008-01-11 21:03:35 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2008-01-11 21:03:35 +0000
commita56b852a2b325468f893758825d4d0a4c2bcd215 (patch)
tree8b199b19b71330ab34c278955c694d7b64f883fa /gtk2_ardour/new_session_dialog.cc
parent5c3ba06c8dc8f695f3bacf929e0b598cad83b04c (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.cc21
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