diff options
author | Miles Bader <miles@gnu.org> | 2007-08-13 13:48:35 +0000 |
---|---|---|
committer | Miles Bader <miles@gnu.org> | 2007-08-13 13:48:35 +0000 |
commit | b2e6b10fe2d40020a75ab0025af98a4abf339cd2 (patch) | |
tree | db265e5ea93cdc13f8e3b54ed5c7ad2869d50ec9 /src/macmenu.c | |
parent | 905350bef3ebc514a418658dd155c1d062664b56 (diff) | |
parent | 37cc095b6a175fb5a2fb18fa029eaf3aa3b3fa53 (diff) | |
download | emacs-b2e6b10fe2d40020a75ab0025af98a4abf339cd2.tar.gz emacs-b2e6b10fe2d40020a75ab0025af98a4abf339cd2.tar.bz2 emacs-b2e6b10fe2d40020a75ab0025af98a4abf339cd2.zip |
Merge from emacs--devo--0
Patches applied:
* emacs--devo--0 (patch 846-851)
- Update from CVS
- Merge from emacs--rel--22
* emacs--rel--22 (patch 88-92)
- Update from CVS
- Merge from gnus--rel--5.10
* gnus--rel--5.10 (patch 242-244)
- Update from CVS
Revision: emacs@sv.gnu.org/emacs--unicode--0--patch-246
Diffstat (limited to 'src/macmenu.c')
-rw-r--r-- | src/macmenu.c | 21 |
1 files changed, 16 insertions, 5 deletions
diff --git a/src/macmenu.c b/src/macmenu.c index e2d4ba8be38..883a8463c2d 100644 --- a/src/macmenu.c +++ b/src/macmenu.c @@ -2331,6 +2331,7 @@ mac_menu_show (f, x, y, for_click, keymaps, title, error) ((value) + DIALOG_BUTTON_COMMAND_ID_OFFSET) extern EMACS_TIME timer_check P_ ((int)); +static int quit_dialog_event_loop; static pascal OSStatus mac_handle_dialog_event (next_handler, event, data) @@ -2340,7 +2341,6 @@ mac_handle_dialog_event (next_handler, event, data) { OSStatus err, result = eventNotHandledErr; WindowRef window = (WindowRef) data; - int quit_event_loop_p = 0; switch (GetEventClass (event)) { @@ -2355,7 +2355,7 @@ mac_handle_dialog_event (next_handler, event, data) if (DIALOG_BUTTON_COMMAND_ID_P (command.commandID)) { SetWRefCon (window, command.commandID); - quit_event_loop_p = 1; + quit_dialog_event_loop = 1; break; } @@ -2379,7 +2379,7 @@ mac_handle_dialog_event (next_handler, event, data) switch (char_code) { case kEscapeCharCode: - quit_event_loop_p = 1; + quit_dialog_event_loop = 1; break; default: @@ -2395,7 +2395,7 @@ mac_handle_dialog_event (next_handler, event, data) NULL, &key_code); if (err == noErr) if (mac_quit_char_key_p (modifiers, key_code)) - quit_event_loop_p = 1; + quit_dialog_event_loop = 1; } break; } @@ -2406,7 +2406,7 @@ mac_handle_dialog_event (next_handler, event, data) abort (); } - if (quit_event_loop_p) + if (quit_dialog_event_loop) { err = QuitEventLoop (GetCurrentEventLoop ()); if (err == noErr) @@ -2733,6 +2733,7 @@ create_and_show_dialog (f, first_wv) { EventTargetRef toolbox_dispatcher = GetEventDispatcherTarget (); + quit_dialog_event_loop = 0; while (1) { EMACS_TIME next_time = timer_check (1); @@ -2758,12 +2759,22 @@ create_and_show_dialog (f, first_wv) SendEventToEventTarget (event, toolbox_dispatcher); ReleaseEvent (event); } +#ifdef MAC_OSX else if (err != eventLoopTimedOutErr) { if (err == eventLoopQuitErr) err = noErr; break; } +#else + /* The return value of ReceiveNextEvent seems to be + unreliable. Use our own global variable instead. */ + if (quit_dialog_event_loop) + { + err = noErr; + break; + } +#endif } } if (err == noErr) |