diff --git a/gtk2_ardour/option_editor.cc b/gtk2_ardour/option_editor.cc index daf163eb08..a7fb86deda 100644 --- a/gtk2_ardour/option_editor.cc +++ b/gtk2_ardour/option_editor.cc @@ -29,6 +29,7 @@ #include "ardour/utils.h" #include "pbd/configuration.h" +#include "pbd/replace_all.h" #include "public_editor.h" #include "option_editor.h" @@ -40,6 +41,13 @@ using namespace Gtk; using namespace Gtkmm2ext; using namespace ARDOUR; +static string poor_mans_glob (string path) +{ + string copy = path; + replace_all (copy, "~", Glib::get_home_dir()); + return copy; +} + void OptionEditorComponent::add_widget_to_page (OptionEditorPage* p, Gtk::Widget* w) { @@ -483,7 +491,7 @@ DirectoryOption::DirectoryOption (string const & i, string const & n, sigc::slot , _set (s) { _file_chooser.set_action (Gtk::FILE_CHOOSER_ACTION_SELECT_FOLDER); - _file_chooser.signal_file_set().connect (sigc::mem_fun (*this, &DirectoryOption::file_set)); + _file_chooser.signal_selection_changed().connect (sigc::mem_fun (*this, &DirectoryOption::selection_changed)); _file_chooser.signal_current_folder_changed().connect (sigc::mem_fun (*this, &DirectoryOption::current_folder_set)); } @@ -491,7 +499,7 @@ DirectoryOption::DirectoryOption (string const & i, string const & n, sigc::slot void DirectoryOption::set_state_from_config () { - _file_chooser.set_current_folder (_get ()); + _file_chooser.set_current_folder (poor_mans_glob(_get ())); } void @@ -504,13 +512,13 @@ DirectoryOption::add_to_page (OptionEditorPage* p) } void -DirectoryOption::file_set () +DirectoryOption::selection_changed () { - _set (_file_chooser.get_filename ()); + _set (poor_mans_glob(_file_chooser.get_filename ())); } void DirectoryOption::current_folder_set () { - _set (_file_chooser.get_current_folder ()); + _set (poor_mans_glob(_file_chooser.get_current_folder ())); } diff --git a/gtk2_ardour/option_editor.h b/gtk2_ardour/option_editor.h index ac768383ee..9ab8132d2c 100644 --- a/gtk2_ardour/option_editor.h +++ b/gtk2_ardour/option_editor.h @@ -624,7 +624,7 @@ public: Gtk::Widget& tip_widget() { return _file_chooser; } private: - void file_set (); + void selection_changed (); void current_folder_set (); sigc::slot _get; ///< slot to get the configuration variable's value