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