summaryrefslogtreecommitdiff
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
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
-rw-r--r--src/ChangeLog15
-rw-r--r--src/mac.c47
-rw-r--r--src/macfns.c8
-rw-r--r--src/macgui.h2
-rw-r--r--src/macterm.c18
5 files changed, 63 insertions, 27 deletions
diff --git a/src/ChangeLog b/src/ChangeLog
index f77876b007a..16cf5a216e1 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,18 @@
+2004-10-10 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
+
+ * 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
+
2004-10-10 Kim F. Storm <storm@cua.dk>
* keyboard.c (timer_resume_idle): New function to resume idle
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
diff --git a/src/macfns.c b/src/macfns.c
index f7594e9c6c2..88f975a65c8 100644
--- a/src/macfns.c
+++ b/src/macfns.c
@@ -4247,6 +4247,7 @@ specified. Ensure that file exists if MUSTMATCH is non-nil. */)
NavUserAction userAction;
CFStringRef message=NULL, client=NULL, saveName = NULL;
+ BLOCK_INPUT;
/* No need for a callback function because we are modal */
NavGetDefaultDialogCreationOptions(&options);
options.modality = kWindowModalityAppModal;
@@ -4317,9 +4318,7 @@ specified. Ensure that file exists if MUSTMATCH is non-nil. */)
AEDisposeDesc(&defLocAed);
}
- BLOCK_INPUT;
status = NavDialogRun(dialogRef);
- UNBLOCK_INPUT;
}
if (saveName) CFRelease(saveName);
@@ -4332,9 +4331,7 @@ specified. Ensure that file exists if MUSTMATCH is non-nil. */)
{
case kNavUserActionNone:
case kNavUserActionCancel:
- NavDialogDispose(dialogRef);
- Fsignal (Qquit, Qnil); /* Treat cancel like C-g */
- return;
+ break; /* Treat cancel like C-g */
case kNavUserActionOpen:
case kNavUserActionChoose:
case kNavUserActionSaveAs:
@@ -4369,6 +4366,7 @@ specified. Ensure that file exists if MUSTMATCH is non-nil. */)
dir, mustmatch, dir, Qfile_name_history,
default_filename, Qnil);
}
+ UNBLOCK_INPUT;
}
UNGCPRO;
diff --git a/src/macgui.h b/src/macgui.h
index 58081df52b4..e5ea665ac15 100644
--- a/src/macgui.h
+++ b/src/macgui.h
@@ -42,6 +42,8 @@ typedef unsigned long Time;
#undef min
#undef init_process
#include <Carbon/Carbon.h>
+#undef mktime
+#define mktime emacs_mktime
#undef Z
#define Z (current_buffer->text->z)
#undef free
diff --git a/src/macterm.c b/src/macterm.c
index a5e1de9be08..3616ac95672 100644
--- a/src/macterm.c
+++ b/src/macterm.c
@@ -5317,7 +5317,11 @@ x_raise_frame (f)
struct frame *f;
{
if (f->async_visible)
- SelectWindow (FRAME_MAC_WINDOW (f));
+ {
+ BLOCK_INPUT;
+ SelectWindow (FRAME_MAC_WINDOW (f));
+ UNBLOCK_INPUT;
+ }
}
/* Lower frame F. */
@@ -5326,7 +5330,11 @@ x_lower_frame (f)
struct frame *f;
{
if (f->async_visible)
- SendBehind (FRAME_MAC_WINDOW (f), nil);
+ {
+ BLOCK_INPUT;
+ SendBehind (FRAME_MAC_WINDOW (f), nil);
+ UNBLOCK_INPUT;
+ }
}
static void
@@ -8757,6 +8765,7 @@ make_mac_frame (FRAME_PTR fp)
mwp = fp->output_data.mac;
+ BLOCK_INPUT;
if (making_terminal_window)
{
if (!(mwp->mWP = GetNewCWindow (TERM_WINDOW_RESOURCE, NULL,
@@ -8784,9 +8793,8 @@ make_mac_frame (FRAME_PTR fp)
/* so that update events can find this mac_output struct */
mwp->mFP = fp; /* point back to emacs frame */
- SetPortWindowPort (mwp->mWP);
-
SizeWindow (mwp->mWP, FRAME_PIXEL_WIDTH (fp), FRAME_PIXEL_HEIGHT (fp), false);
+ UNBLOCK_INPUT;
}
@@ -9209,6 +9217,7 @@ mac_initialize ()
signal (SIGPIPE, x_connection_signal);
#endif
+ BLOCK_INPUT;
mac_initialize_display_info ();
#if TARGET_API_MAC_CARBON
@@ -9227,6 +9236,7 @@ mac_initialize ()
if (!inhibit_window_system)
MakeMeTheFrontProcess ();
#endif
+ UNBLOCK_INPUT;
}