From ecf1dbc7859df536e365ce82a19fb96f2a214a2f Mon Sep 17 00:00:00 2001 From: Jonathan Wilkes <jon.w.wilkes@gmail.com> Date: Wed, 9 Nov 2016 22:42:03 -0500 Subject: [PATCH] for OSX, don't split argv_string so we can accommodate file paths with spaces in them --- pd/nw/index.js | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/pd/nw/index.js b/pd/nw/index.js index 72e965dfd..837c2985c 100644 --- a/pd/nw/index.js +++ b/pd/nw/index.js @@ -263,23 +263,27 @@ function add_events() { nw.App.on("open", function(argv_string) { var port, pd_engine_id, - argv = argv_string.split(" "); - if (argv.length) { - if (argv.length === 1) { + argv; + if (argv_string.slice(0, 7) === "file://") { // Clicking on a Pd file with an installed OSX app bundle sends // a single argument which is a file:// URI. // With the OSX app bundle it is the GUI which starts the // Pd process. So in this case, we just need to parse the // file and open it. - if (argv.slice(0, 7) === "file://") { - pdgui.menu_open(decodeURI(argv.slice(7))); - } - } else { + // Selecting multiple files and clicking "Open" will trigger + // a separate "open" event for each file, so luckily we don't + // have to parse them. + pdgui.menu_open(decodeURI(argv_string.slice(7))); + } else { + // Otherwise we assume that the Pd process tried to + // open the GUI, supplying us with a port number and + // an instance id. In this case, we need to create a + // socket connection and fetch the file-list... + argv = argv_string.split(" "); port = +argv.slice(-5, -4); pd_engine_id = argv.slice(-1); pdgui.connect_as_client_to_secondary_instance("localhost", port, pd_engine_id); - } } }); // Browser Window Close -- GitLab