* nsfns.m (Fns_do_applescript): Run event loop until script has
authorJan Djärv <jan.h.d@swipnet.se>
Sun, 23 Dec 2012 12:35:37 +0000 (13:35 +0100)
committerJan Djärv <jan.h.d@swipnet.se>
Sun, 23 Dec 2012 12:35:37 +0000 (13:35 +0100)
been executed.
(ns_run_ascript): Chech as_script for nil, set to nil after
executing script.

Fixes: debbugs:12969

src/ChangeLog
src/nsfns.m

index f8f0b82..2723d8f 100644 (file)
@@ -1,3 +1,10 @@
+2012-12-23  Jan Djärv  <jan.h.d@swipnet.se>
+
+       * nsfns.m (Fns_do_applescript): Run event loop until script has
+       been executed (Bug#12969).
+       (ns_run_ascript): Chech as_script for nil, set to nil after
+       executing script.
+
 2012-12-22  Martin Rudalics  <rudalics@gmx.at>
 
        * window.c (Fselect_window): Reword doc-string (Bug#13248).
index 428cfcb..7b70793 100644 (file)
@@ -2106,7 +2106,9 @@ ns_do_applescript (Lisp_Object script, Lisp_Object *result)
 void
 ns_run_ascript (void)
 {
-  as_status = ns_do_applescript (as_script, as_result);
+  if (! NILP (as_script))
+    as_status = ns_do_applescript (as_script, as_result);
+  as_script = Qnil;
 }
 
 DEFUN ("ns-do-applescript", Fns_do_applescript, Sns_do_applescript, 1, 1, 0,
@@ -2143,11 +2145,14 @@ In case the execution fails, an error is signaled. */)
                                data2: NSAPP_DATA2_RUNASSCRIPT];
 
   [NSApp postEvent: nxev atStart: NO];
-  [NSApp run];
+
+  // If there are other events, the event loop may exit.  Keep running
+  // until the script has been handeled.  */
+  while (! NILP (as_script))
+    [NSApp run];
 
   status = as_status;
   as_status = 0;
-  as_script = Qnil;
   as_result = 0;
   unblock_input ();
   if (status == 0)