diff --git a/pd/nw/pdgui.js b/pd/nw/pdgui.js index 727670b735355dcb93b0a4adc8d0cef4228e5aab..9221c7bf223aeaa6c068d4f0d0e1120c8b61373f 100644 --- a/pd/nw/pdgui.js +++ b/pd/nw/pdgui.js @@ -40,7 +40,7 @@ exports.get_lib_dir = function() { return lib_dir; } -exports.get_pd_opendir = function() { +function get_pd_opendir() { if (pd_opendir) { return pd_opendir; } else { @@ -48,6 +48,16 @@ exports.get_pd_opendir = function() { } } +exports.get_pd_opendir = get_pd_opendir; + +function set_pd_opendir(dir) { + pd_opendir = dir; +} + +function gui_set_current_dir(dummy, dir_and_filename) { + set_pd_opendir(path.dirname(dir_and_filename)); +} + function gui_set_gui_preset(name) { skin.set(name); } @@ -543,7 +553,7 @@ exports.menu_saveas = menu_saveas; function menu_new () { // try not to use a global here - untitled_directory = pwd; + untitled_directory = get_pd_opendir(); pdsend("pd filename", "Untitled-" + untitled_number, enquote(defunkify_windows_path(untitled_directory))); @@ -764,7 +774,7 @@ function open_file(file) { if (basename.match(/\.(pd|pat|mxt)$/i) != null) { pdsend("pd open", enquote(basename), (enquote(directory))); - pd_opendir = directory; + set_pd_opendir(directory); //::pd_guiprefs::update_recentfiles "$filename" 1 } } diff --git a/pd/src/s_main.c b/pd/src/s_main.c index e6f503167278d14feb84dd13524615cb59ac8bf1..b020b81f0b37c8135c9a40e823c2cc8c55b1a609 100644 --- a/pd/src/s_main.c +++ b/pd/src/s_main.c @@ -171,7 +171,9 @@ static void openit(const char *dirname, const char *filename) { close (fd); glob_evalfile(0, gensym(nameptr), gensym(dirbuf)); - sys_vgui("pdtk_set_current_dir {%s}\n", filename); + //sys_vgui("pdtk_set_current_dir {%s}\n", filename); + gui_vmess("gui_set_current_dir", "xs", + 0, filename); } else error("%s: can't open", filename);