summaryrefslogtreecommitdiff
path: root/gtk2_ardour/option_editor.cc
diff options
context:
space:
mode:
authorJohn Emmas <johne53@tiscali.co.uk>2015-03-09 15:54:59 +0000
committerJohn Emmas <johne53@tiscali.co.uk>2015-03-09 15:57:15 +0000
commite243d328a4ba9c425341596888c19449785e3d3d (patch)
tree993090f9220221d153f4e943e18aeb60b3c5d7c8 /gtk2_ardour/option_editor.cc
parent4d66c6c1abd63bddd993362001c2f16a740f9361 (diff)
Fix a couple of issues when displaying the 'Preferences' dialog on Windows:-
1) When changing the 'Default folder for new sessions' we weren't responding to the appropriate signal (so the change wasn't getting saved in our user's 'config' file). We now respond to the 'selection-changed' signal. 2) If the above path happened to contain a tilde character we weren't interpreting it to mean the user's home folder. I've copied across a function called 'poor_mans_glob()' which Ardour uses elsewhere for dealing with this situation in other file dialogs. Once we confirm that issue #2 is now working for all platforms, I'd suggest moving 'poor_mans_glob()' into libpbd. At the moment we have at least 3 definitions of it (all identical) scattered around in various places.
Diffstat (limited to 'gtk2_ardour/option_editor.cc')
-rw-r--r--gtk2_ardour/option_editor.cc18
1 files changed, 13 insertions, 5 deletions
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 ()));
}