summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNick Mainsbridge <beatroute@iprimus.com.au>2008-11-17 07:47:06 +0000
committerNick Mainsbridge <beatroute@iprimus.com.au>2008-11-17 07:47:06 +0000
commit489278f0f70c87103e40c49ffa8ee15205e4b130 (patch)
treecef819c32efc72f9615b78ed5a837b7e14b3a8d1
parented9869035faf2f67a7bd05562fd2917d094676c0 (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.cc17
-rw-r--r--gtk2_ardour/new_session_dialog.h2
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