diff options
author | Steven Tamm <steventamm@mac.com> | 2004-10-10 16:56:21 +0000 |
---|---|---|
committer | Steven Tamm <steventamm@mac.com> | 2004-10-10 16:56:21 +0000 |
commit | c3f4c690b66558c159f98b9ab5d9164c2fa0bfb7 (patch) | |
tree | 6fabdcde0d06bb3a2638ea46102c1b4925464a4d /src/mac.c | |
parent | af8c54774fa9b48755d28bee1d095e4a7eb83c2f (diff) | |
download | emacs-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.c | 47 |
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 |