summaryrefslogtreecommitdiff
path: root/src/mac.c
diff options
context:
space:
mode:
authorSteven Tamm <steventamm@mac.com>2004-10-10 16:56:21 +0000
committerSteven Tamm <steventamm@mac.com>2004-10-10 16:56:21 +0000
commitc3f4c690b66558c159f98b9ab5d9164c2fa0bfb7 (patch)
tree6fabdcde0d06bb3a2638ea46102c1b4925464a4d /src/mac.c
parentaf8c54774fa9b48755d28bee1d095e4a7eb83c2f (diff)
downloademacs-c3f4c690b66558c159f98b9ab5d9164c2fa0bfb7.tar.gz
macterm.c (x_raise_frame): Add BLOCK_INPUT around SelectWindow
(x_lower_frame): Add BLOCK_INPUT around SendBehind (make_mac_frame): Add BLOCK_INPUT around the making of a terminal frame (mac_initialize): Add BLOCK_INPUT around carbon initialization macgui.h (mktime): Use emacs_mktime macfns.c (Fx_file_dialog): Add BLOCK_INPUT around more code. Make a cancel file-open dialog be like C-g. mac.c (mktime): Use emacs_mktime (Fdo_applescript): Add BLOCK_INPUT around do_applescript (Fmac_paste_function): Add better error handling for carbon cut/paste
Diffstat (limited to 'src/mac.c')
-rw-r--r--src/mac.c47
1 files changed, 29 insertions, 18 deletions
diff --git a/src/mac.c b/src/mac.c
index f7e96b9c146..91d07372578 100644
--- a/src/mac.c
+++ b/src/mac.c
@@ -47,6 +47,8 @@ Boston, MA 02111-1307, USA. */
#undef realloc
#undef init_process
#include <Carbon/Carbon.h>
+#undef mktime
+#define mktime emacs_mktime
#undef free
#define free unexec_free
#undef malloc
@@ -73,6 +75,7 @@ Boston, MA 02111-1307, USA. */
#include "process.h"
#include "sysselect.h"
#include "systime.h"
+#include "blockinput.h"
Lisp_Object QCLIPBOARD;
@@ -2548,7 +2551,9 @@ component. */)
CHECK_STRING (script);
+ BLOCK_INPUT;
status = do_applescript (SDATA (script), &result);
+ UNBLOCK_INPUT;
if (status)
{
if (!result)
@@ -2618,26 +2623,23 @@ DEFUN ("mac-paste-function", Fmac_paste_function, Smac_paste_function, 0, 0, 0,
()
{
#if TARGET_API_MAC_CARBON
+ OSStatus err;
ScrapRef scrap;
ScrapFlavorFlags sff;
Size s;
int i;
char *data;
- if (GetCurrentScrap (&scrap) != noErr)
- return Qnil;
-
- if (GetScrapFlavorFlags (scrap, kScrapFlavorTypeText, &sff) != noErr)
- return Qnil;
-
- if (GetScrapFlavorSize (scrap, kScrapFlavorTypeText, &s) != noErr)
- return Qnil;
-
- if ((data = (char*) alloca (s)) == NULL)
- return Qnil;
-
- if (GetScrapFlavorData (scrap, kScrapFlavorTypeText, &s, data) != noErr
- || s == 0)
+ BLOCK_INPUT;
+ err = GetCurrentScrap (&scrap);
+ if (err == noErr)
+ err = GetScrapFlavorFlags (scrap, kScrapFlavorTypeText, &sff);
+ if (err == noErr)
+ err = GetScrapFlavorSize (scrap, kScrapFlavorTypeText, &s);
+ if (err == noErr && (data = (char*) alloca (s)))
+ err = GetScrapFlavorData (scrap, kScrapFlavorTypeText, &s, data);
+ UNBLOCK_INPUT;
+ if (err != noErr || s == 0)
return Qnil;
/* Emacs expects clipboard contents have Unix-style eol's */
@@ -2702,13 +2704,22 @@ DEFUN ("mac-cut-function", Fmac_cut_function, Smac_cut_function, 1, 2, 0,
#if TARGET_API_MAC_CARBON
{
ScrapRef scrap;
+
+ BLOCK_INPUT;
ClearCurrentScrap ();
if (GetCurrentScrap (&scrap) != noErr)
- error ("cannot get current scrap");
+ {
+ UNBLOCK_INPUT;
+ error ("cannot get current scrap");
+ }
if (PutScrapFlavor (scrap, kScrapFlavorTypeText, kScrapFlavorMaskNone, len,
buf) != noErr)
- error ("cannot put to scrap");
+ {
+ UNBLOCK_INPUT;
+ error ("cannot put to scrap");
+ }
+ UNBLOCK_INPUT;
}
#else /* not TARGET_API_MAC_CARBON */
ZeroScrap ();
@@ -2743,9 +2754,11 @@ and t is the same as `SECONDARY'. */)
ScrapRef scrap;
ScrapFlavorFlags sff;
+ BLOCK_INPUT;
if (GetCurrentScrap (&scrap) == noErr)
if (GetScrapFlavorFlags (scrap, kScrapFlavorTypeText, &sff) == noErr)
val = Qt;
+ UNBLOCK_INPUT;
#else /* not TARGET_API_MAC_CARBON */
Handle my_handle;
long rc, scrap_offset;
@@ -2770,8 +2783,6 @@ and t is the same as `SECONDARY'. */)
extern int inhibit_window_system;
extern int noninteractive;
-#include "blockinput.h"
-
/* When Emacs is started from the Finder, SELECT always immediately
returns as if input is present when file descriptor 0 is polled for
input. Strangely, when Emacs is run as a GUI application from the