diff options
author | Nick Mainsbridge <beatroute@iprimus.com.au> | 2008-11-17 07:47:06 +0000 |
---|---|---|
committer | Nick Mainsbridge <beatroute@iprimus.com.au> | 2008-11-17 07:47:06 +0000 |
commit | 489278f0f70c87103e40c49ffa8ee15205e4b130 (patch) | |
tree | cef819c32efc72f9615b78ed5a837b7e14b3a8d1 | |
parent | ed9869035faf2f67a7bd05562fd2917d094676c0 (diff) |
Ensure double-click on session file in findoer on osx succeeds.
git-svn-id: svn://localhost/ardour2/branches/2.0-ongoing@4185 d708f5d6-7413-0410-9779-e7cbd77b26cf
-rw-r--r-- | gtk2_ardour/new_session_dialog.cc | 17 | ||||
-rw-r--r-- | gtk2_ardour/new_session_dialog.h | 2 |
2 files changed, 16 insertions, 3 deletions
diff --git a/gtk2_ardour/new_session_dialog.cc b/gtk2_ardour/new_session_dialog.cc index 38b2160f78..3ced2c7688 100644 --- a/gtk2_ardour/new_session_dialog.cc +++ b/gtk2_ardour/new_session_dialog.cc @@ -438,6 +438,8 @@ NewSessionDialog::NewSessionDialog() m_notebook->show(); m_notebook->show_all_children(); + engine_page_session_folder = X_(""); + engine_page_session_name = X_(""); set_default_response (Gtk::RESPONSE_OK); if (!ARDOUR_COMMAND_LINE::session_name.length()) { @@ -534,13 +536,13 @@ void NewSessionDialog::set_session_name (const Glib::ustring& name) { m_name->set_text (name); + engine_page_session_name = name; } void NewSessionDialog::set_session_folder(const Glib::ustring& dir) { Glib::ustring realdir = dir; - char* res; /* this little tangled mess is a result of 4 things: @@ -560,15 +562,17 @@ NewSessionDialog::set_session_folder(const Glib::ustring& dir) char buf[PATH_MAX]; - if((res = realpath (dir.c_str(), buf)) != 0) { + if(realpath (dir.c_str(), buf) != 0) { if (!Glib::file_test (dir, Glib::FILE_TEST_IS_DIR)) { realdir = Glib::path_get_dirname (realdir); } m_folder->set_current_folder (realdir); + engine_page_session_folder = realdir; } #else + char* res; if (!Glib::file_test (dir, Glib::FILE_TEST_IS_DIR)) { realdir = Glib::path_get_dirname (realdir); cerr << "didn't exist, use " << realdir << endl; @@ -606,6 +610,9 @@ NewSessionDialog::session_name() const case NewPage: case EnginePage: /* new or audio setup pages */ + if (!(page_set & OpenPage) && !(page_set & NewPage)) { + return Glib::filename_from_utf8(engine_page_session_name); + } return Glib::filename_from_utf8(m_name->get_text()); default: break; @@ -626,8 +633,12 @@ NewSessionDialog::session_folder() const return Glib::filename_from_utf8(m_folder->get_filename()); case EnginePage: + if (!(page_set & OpenPage) && !(page_set & NewPage)) { + /* just engine page, nothing else */ + return Glib::filename_from_utf8(engine_page_session_folder); + } if (page_set == EnginePage) { - /* just engine page, nothing else : use m_folder since it should be set */ + /* use m_folder since it should be set */ return Glib::filename_from_utf8(m_folder->get_filename()); } break; diff --git a/gtk2_ardour/new_session_dialog.h b/gtk2_ardour/new_session_dialog.h index 1d729fef73..658b2a8b90 100644 --- a/gtk2_ardour/new_session_dialog.h +++ b/gtk2_ardour/new_session_dialog.h @@ -215,6 +215,8 @@ protected: bool on_new_session_page; bool have_engine; + Glib::ustring engine_page_session_folder; + Glib::ustring engine_page_session_name; }; #endif // NEW_SESSION_DIALOG_H |