diff --git a/src/ChangeLog b/src/ChangeLog index f8f0b82d3da..2723d8f92ec 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,10 @@ +2012-12-23 Jan Djärv + + * 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 * window.c (Fselect_window): Reword doc-string (Bug#13248). diff --git a/src/nsfns.m b/src/nsfns.m index 428cfcb9a10..7b70793258b 100644 --- a/src/nsfns.m +++ b/src/nsfns.m @@ -2106,7 +2106,9 @@ and GNUstep implementations ("distributor-specific release 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 @@ and GNUstep implementations ("distributor-specific release 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)