diff options
| author | Miles Bader | 2005-06-15 23:32:15 +0000 |
|---|---|---|
| committer | Miles Bader | 2005-06-15 23:32:15 +0000 |
| commit | 2092fd2b3339ac097e1b27643b70211dcb0b4e95 (patch) | |
| tree | 7f2307bbb82c7f111678885f871d88d44c870d4e /src/macterm.c | |
| parent | 8786f9fffda045f818e622bddd9c85249dfb9ff7 (diff) | |
| parent | a4bf534f1eb1dcb2048f5deeff783c23059e3924 (diff) | |
| download | emacs-2092fd2b3339ac097e1b27643b70211dcb0b4e95.tar.gz emacs-2092fd2b3339ac097e1b27643b70211dcb0b4e95.zip | |
Revision: miles@gnu.org--gnu-2005/emacs--unicode--0--patch-63
Merge from emacs--cvs-trunk--0
Patches applied:
* emacs--cvs-trunk--0 (patch 358-423)
- Update from CVS
- Remove "-face" suffix from widget faces
- Remove "-face" suffix from custom faces
- Remove "-face" suffix from change-log faces
- Remove "-face" suffix from compilation faces
- Remove "-face" suffix from diff-mode faces
- lisp/longlines.el (longlines-visible-face): Face removed
- Remove "-face" suffix from woman faces
- Remove "-face" suffix from whitespace-highlight face
- Remove "-face" suffix from ruler-mode faces
- Remove "-face" suffix from show-paren faces
- Remove "-face" suffix from log-view faces
- Remove "-face" suffix from smerge faces
- Remove "-face" suffix from show-tabs faces
- Remove "-face" suffix from highlight-changes faces
- Remove "-face" suffix from and downcase info faces
- Remove "-face" suffix from pcvs faces
- Update uses of renamed pcvs faces
- Tweak ChangeLog
- Remove "-face" suffix from strokes-char face
- Remove "-face" suffix from compare-windows face
- Remove "-face" suffix from calendar faces
- Remove "-face" suffix from diary-button face
- Remove "-face" suffix from testcover faces
- Remove "-face" suffix from viper faces
- Remove "-face" suffix from org faces
- Remove "-face" suffix from sgml-namespace face
- Remove "-face" suffix from table-cell face
- Remove "-face" suffix from tex-mode faces
- Remove "-face" suffix from texinfo-heading face
- Remove "-face" suffix from flyspell faces
- Remove "-face" suffix from gomoku faces
- Remove "-face" suffix from mpuz faces
- Merge from gnus--rel--5.10
- Remove "-face" suffix from Buffer-menu-buffer face
- Remove "-face" suffix from antlr-mode faces
- Remove "-face" suffix from ebrowse faces
- Remove "-face" suffix from flymake faces
- Remove "-face" suffix from idlwave faces
- Remove "-face" suffix from sh-script faces
- Remove "-face" suffix from vhdl-mode faces
- Remove "-face" suffix from which-func face
- Remove "-face" suffix from cperl-mode faces
- Remove "-face" suffix from ld-script faces
- Fix cperl-mode font-lock problem
- Tweak which-func face
* gnus--rel--5.10 (patch 80-82)
- Merge from emacs--cvs-trunk--0
- Update from CVS
Diffstat (limited to 'src/macterm.c')
| -rw-r--r-- | src/macterm.c | 314 |
1 files changed, 190 insertions, 124 deletions
diff --git a/src/macterm.c b/src/macterm.c index dd48d43a039..cef213024fa 100644 --- a/src/macterm.c +++ b/src/macterm.c | |||
| @@ -2002,33 +2002,37 @@ static void | |||
| 2002 | mac_compute_glyph_string_overhangs (s) | 2002 | mac_compute_glyph_string_overhangs (s) |
| 2003 | struct glyph_string *s; | 2003 | struct glyph_string *s; |
| 2004 | { | 2004 | { |
| 2005 | Rect r; | 2005 | if (s->cmp == NULL |
| 2006 | MacFontStruct *font = s->font; | 2006 | && s->first_glyph->type == CHAR_GLYPH) |
| 2007 | |||
| 2008 | TextFont (font->mac_fontnum); | ||
| 2009 | TextSize (font->mac_fontsize); | ||
| 2010 | TextFace (font->mac_fontface); | ||
| 2011 | |||
| 2012 | if (s->two_byte_p) | ||
| 2013 | QDTextBounds (s->nchars * 2, (char *)s->char2b, &r); | ||
| 2014 | else | ||
| 2015 | { | 2007 | { |
| 2016 | int i; | 2008 | Rect r; |
| 2017 | char *buf = xmalloc (s->nchars); | 2009 | MacFontStruct *font = s->font; |
| 2018 | 2010 | ||
| 2019 | if (buf == NULL) | 2011 | TextFont (font->mac_fontnum); |
| 2020 | SetRect (&r, 0, 0, 0, 0); | 2012 | TextSize (font->mac_fontsize); |
| 2013 | TextFace (font->mac_fontface); | ||
| 2014 | |||
| 2015 | if (s->two_byte_p) | ||
| 2016 | QDTextBounds (s->nchars * 2, (char *)s->char2b, &r); | ||
| 2021 | else | 2017 | else |
| 2022 | { | 2018 | { |
| 2023 | for (i = 0; i < s->nchars; ++i) | 2019 | int i; |
| 2024 | buf[i] = s->char2b[i].byte2; | 2020 | char *buf = xmalloc (s->nchars); |
| 2025 | QDTextBounds (s->nchars, buf, &r); | 2021 | |
| 2026 | xfree (buf); | 2022 | if (buf == NULL) |
| 2023 | SetRect (&r, 0, 0, 0, 0); | ||
| 2024 | else | ||
| 2025 | { | ||
| 2026 | for (i = 0; i < s->nchars; ++i) | ||
| 2027 | buf[i] = s->char2b[i].byte2; | ||
| 2028 | QDTextBounds (s->nchars, buf, &r); | ||
| 2029 | xfree (buf); | ||
| 2030 | } | ||
| 2027 | } | 2031 | } |
| 2028 | } | ||
| 2029 | 2032 | ||
| 2030 | s->right_overhang = r.right > s->width ? r.right - s->width : 0; | 2033 | s->right_overhang = r.right > s->width ? r.right - s->width : 0; |
| 2031 | s->left_overhang = r.left < 0 ? -r.left : 0; | 2034 | s->left_overhang = r.left < 0 ? -r.left : 0; |
| 2035 | } | ||
| 2032 | } | 2036 | } |
| 2033 | 2037 | ||
| 2034 | 2038 | ||
| @@ -7495,6 +7499,11 @@ Lisp_Object Vmac_pass_command_to_system; | |||
| 7495 | /* If Non-nil, the Mac "Control" key is passed on to the Mac Toolbox | 7499 | /* If Non-nil, the Mac "Control" key is passed on to the Mac Toolbox |
| 7496 | for processing before Emacs sees it. */ | 7500 | for processing before Emacs sees it. */ |
| 7497 | Lisp_Object Vmac_pass_control_to_system; | 7501 | Lisp_Object Vmac_pass_control_to_system; |
| 7502 | |||
| 7503 | /* Points to the variable `inev' in the function XTread_socket. It is | ||
| 7504 | used for passing an input event to the function back from a Carbon | ||
| 7505 | event handler. */ | ||
| 7506 | static struct input_event *read_socket_inev = NULL; | ||
| 7498 | #endif | 7507 | #endif |
| 7499 | 7508 | ||
| 7500 | /* Set in term/mac-win.el to indicate that event loop can now generate | 7509 | /* Set in term/mac-win.el to indicate that event loop can now generate |
| @@ -7627,45 +7636,79 @@ mac_get_mouse_btn (EventRef ref) | |||
| 7627 | 7636 | ||
| 7628 | /* Normally, ConvertEventRefToEventRecord will correctly handle all | 7637 | /* Normally, ConvertEventRefToEventRecord will correctly handle all |
| 7629 | events. However the click of the mouse wheel is not converted to a | 7638 | events. However the click of the mouse wheel is not converted to a |
| 7630 | mouseDown or mouseUp event. This calls ConvertEventRef, but then | 7639 | mouseDown or mouseUp event. Likewise for dead key down events. |
| 7631 | checks to see if it is a mouse up or down carbon event that has not | 7640 | This calls ConvertEventRef, but then checks to see if it is a mouse |
| 7632 | been converted, and if so, converts it by hand (to be picked up in | 7641 | up/down, or a dead key down carbon event that has not been |
| 7633 | the XTread_socket loop). */ | 7642 | converted, and if so, converts it by hand (to be picked up in the |
| 7643 | XTread_socket loop). */ | ||
| 7634 | static Boolean mac_convert_event_ref (EventRef eventRef, EventRecord *eventRec) | 7644 | static Boolean mac_convert_event_ref (EventRef eventRef, EventRecord *eventRec) |
| 7635 | { | 7645 | { |
| 7636 | Boolean result = ConvertEventRefToEventRecord (eventRef, eventRec); | 7646 | Boolean result = ConvertEventRefToEventRecord (eventRef, eventRec); |
| 7637 | /* Do special case for mouse wheel button. */ | 7647 | |
| 7638 | if (!result && GetEventClass (eventRef) == kEventClassMouse) | 7648 | if (result) |
| 7649 | return result; | ||
| 7650 | |||
| 7651 | switch (GetEventClass (eventRef)) | ||
| 7639 | { | 7652 | { |
| 7640 | UInt32 kind = GetEventKind (eventRef); | 7653 | case kEventClassMouse: |
| 7641 | if (kind == kEventMouseDown && !(eventRec->what == mouseDown)) | 7654 | switch (GetEventKind (eventRef)) |
| 7642 | { | 7655 | { |
| 7656 | case kEventMouseDown: | ||
| 7643 | eventRec->what = mouseDown; | 7657 | eventRec->what = mouseDown; |
| 7644 | result=1; | 7658 | result = 1; |
| 7645 | } | 7659 | break; |
| 7646 | if (kind == kEventMouseUp && !(eventRec->what == mouseUp)) | 7660 | |
| 7647 | { | 7661 | case kEventMouseUp: |
| 7648 | eventRec->what = mouseUp; | 7662 | eventRec->what = mouseUp; |
| 7649 | result=1; | 7663 | result = 1; |
| 7664 | break; | ||
| 7665 | |||
| 7666 | default: | ||
| 7667 | break; | ||
| 7650 | } | 7668 | } |
| 7651 | if (result) | 7669 | |
| 7670 | case kEventClassKeyboard: | ||
| 7671 | switch (GetEventKind (eventRef)) | ||
| 7652 | { | 7672 | { |
| 7653 | /* Need where and when. */ | 7673 | case kEventRawKeyDown: |
| 7654 | UInt32 mods; | 7674 | { |
| 7655 | GetEventParameter (eventRef, kEventParamMouseLocation, | 7675 | unsigned char char_codes; |
| 7656 | typeQDPoint, NULL, sizeof (Point), | 7676 | UInt32 key_code; |
| 7657 | NULL, &eventRec->where); | 7677 | |
| 7658 | /* Use two step process because new event modifiers are | 7678 | eventRec->what = keyDown; |
| 7659 | 32-bit and old are 16-bit. Currently, only loss is | 7679 | GetEventParameter (eventRef, kEventParamKeyMacCharCodes, typeChar, |
| 7660 | NumLock & Fn. */ | 7680 | NULL, sizeof (char), NULL, &char_codes); |
| 7661 | GetEventParameter (eventRef, kEventParamKeyModifiers, | 7681 | GetEventParameter (eventRef, kEventParamKeyCode, typeUInt32, |
| 7662 | typeUInt32, NULL, sizeof (UInt32), | 7682 | NULL, sizeof (UInt32), NULL, &key_code); |
| 7663 | NULL, &mods); | 7683 | eventRec->message = char_codes | ((key_code & 0xff) << 8); |
| 7664 | eventRec->modifiers = mods; | 7684 | result = 1; |
| 7665 | 7685 | } | |
| 7666 | eventRec->when = EventTimeToTicks (GetEventTime (eventRef)); | 7686 | break; |
| 7687 | |||
| 7688 | default: | ||
| 7689 | break; | ||
| 7667 | } | 7690 | } |
| 7691 | |||
| 7692 | default: | ||
| 7693 | break; | ||
| 7668 | } | 7694 | } |
| 7695 | |||
| 7696 | if (result) | ||
| 7697 | { | ||
| 7698 | /* Need where and when. */ | ||
| 7699 | UInt32 mods; | ||
| 7700 | |||
| 7701 | GetEventParameter (eventRef, kEventParamMouseLocation, typeQDPoint, | ||
| 7702 | NULL, sizeof (Point), NULL, &eventRec->where); | ||
| 7703 | /* Use two step process because new event modifiers are 32-bit | ||
| 7704 | and old are 16-bit. Currently, only loss is NumLock & Fn. */ | ||
| 7705 | GetEventParameter (eventRef, kEventParamKeyModifiers, typeUInt32, | ||
| 7706 | NULL, sizeof (UInt32), NULL, &mods); | ||
| 7707 | eventRec->modifiers = mods; | ||
| 7708 | |||
| 7709 | eventRec->when = EventTimeToTicks (GetEventTime (eventRef)); | ||
| 7710 | } | ||
| 7711 | |||
| 7669 | return result; | 7712 | return result; |
| 7670 | } | 7713 | } |
| 7671 | 7714 | ||
| @@ -8235,8 +8278,7 @@ mac_handle_command_event (next_handler, event, data) | |||
| 8235 | } | 8278 | } |
| 8236 | 8279 | ||
| 8237 | static OSErr | 8280 | static OSErr |
| 8238 | init_command_handler (window) | 8281 | init_command_handler () |
| 8239 | WindowPtr window; | ||
| 8240 | { | 8282 | { |
| 8241 | OSErr err = noErr; | 8283 | OSErr err = noErr; |
| 8242 | EventTypeSpec specs[] = {{kEventClassCommand, kEventCommandProcess}}; | 8284 | EventTypeSpec specs[] = {{kEventClassCommand, kEventCommandProcess}}; |
| @@ -8321,6 +8363,68 @@ mac_handle_window_event (next_handler, event, data) | |||
| 8321 | 8363 | ||
| 8322 | return eventNotHandledErr; | 8364 | return eventNotHandledErr; |
| 8323 | } | 8365 | } |
| 8366 | |||
| 8367 | static pascal OSStatus | ||
| 8368 | mac_handle_mouse_event (next_handler, event, data) | ||
| 8369 | EventHandlerCallRef next_handler; | ||
| 8370 | EventRef event; | ||
| 8371 | void *data; | ||
| 8372 | { | ||
| 8373 | OSStatus result; | ||
| 8374 | |||
| 8375 | switch (GetEventKind (event)) | ||
| 8376 | { | ||
| 8377 | case kEventMouseWheelMoved: | ||
| 8378 | { | ||
| 8379 | WindowPtr wp; | ||
| 8380 | struct frame *f; | ||
| 8381 | EventMouseWheelAxis axis; | ||
| 8382 | SInt32 delta; | ||
| 8383 | Point point; | ||
| 8384 | |||
| 8385 | result = CallNextEventHandler (next_handler, event); | ||
| 8386 | if (result != eventNotHandledErr || read_socket_inev == NULL) | ||
| 8387 | return result; | ||
| 8388 | |||
| 8389 | GetEventParameter (event, kEventParamWindowRef, typeWindowRef, | ||
| 8390 | NULL, sizeof (WindowRef), NULL, &wp); | ||
| 8391 | f = mac_window_to_frame (wp); | ||
| 8392 | if (f != mac_focus_frame (&one_mac_display_info)) | ||
| 8393 | break; | ||
| 8394 | |||
| 8395 | GetEventParameter (event, kEventParamMouseWheelAxis, | ||
| 8396 | typeMouseWheelAxis, NULL, | ||
| 8397 | sizeof (EventMouseWheelAxis), NULL, &axis); | ||
| 8398 | if (axis != kEventMouseWheelAxisY) | ||
| 8399 | break; | ||
| 8400 | |||
| 8401 | GetEventParameter (event, kEventParamMouseWheelDelta, typeSInt32, | ||
| 8402 | NULL, sizeof (SInt32), NULL, &delta); | ||
| 8403 | GetEventParameter (event, kEventParamMouseLocation, typeQDPoint, | ||
| 8404 | NULL, sizeof (Point), NULL, &point); | ||
| 8405 | read_socket_inev->kind = WHEEL_EVENT; | ||
| 8406 | read_socket_inev->code = 0; | ||
| 8407 | read_socket_inev->modifiers = | ||
| 8408 | (mac_event_to_emacs_modifiers (event) | ||
| 8409 | | ((delta < 0) ? down_modifier : up_modifier)); | ||
| 8410 | SetPortWindowPort (wp); | ||
| 8411 | GlobalToLocal (&point); | ||
| 8412 | XSETINT (read_socket_inev->x, point.h); | ||
| 8413 | XSETINT (read_socket_inev->y, point.v); | ||
| 8414 | XSETFRAME (read_socket_inev->frame_or_window, f); | ||
| 8415 | read_socket_inev->timestamp = | ||
| 8416 | EventTimeToTicks (GetEventTime (event)) * (1000/60); | ||
| 8417 | |||
| 8418 | return noErr; | ||
| 8419 | } | ||
| 8420 | break; | ||
| 8421 | |||
| 8422 | default: | ||
| 8423 | break; | ||
| 8424 | } | ||
| 8425 | |||
| 8426 | return eventNotHandledErr; | ||
| 8427 | } | ||
| 8324 | #endif /* USE_CARBON_EVENTS */ | 8428 | #endif /* USE_CARBON_EVENTS */ |
| 8325 | 8429 | ||
| 8326 | 8430 | ||
| @@ -8330,16 +8434,24 @@ install_window_handler (window) | |||
| 8330 | { | 8434 | { |
| 8331 | OSErr err = noErr; | 8435 | OSErr err = noErr; |
| 8332 | #if USE_CARBON_EVENTS | 8436 | #if USE_CARBON_EVENTS |
| 8333 | EventTypeSpec specs[] = {{kEventClassWindow, kEventWindowUpdate}, | 8437 | EventTypeSpec specs_window[] = |
| 8334 | {kEventClassWindow, kEventWindowBoundsChanging}}; | 8438 | {{kEventClassWindow, kEventWindowUpdate}, |
| 8335 | static EventHandlerUPP handle_window_event_UPP = NULL; | 8439 | {kEventClassWindow, kEventWindowBoundsChanging}}; |
| 8336 | 8440 | EventTypeSpec specs_mouse[] = {{kEventClassMouse, kEventMouseWheelMoved}}; | |
| 8337 | if (handle_window_event_UPP == NULL) | 8441 | static EventHandlerUPP handle_window_eventUPP = NULL; |
| 8338 | handle_window_event_UPP = NewEventHandlerUPP (mac_handle_window_event); | 8442 | static EventHandlerUPP handle_mouse_eventUPP = NULL; |
| 8339 | 8443 | ||
| 8340 | err = InstallWindowEventHandler (window, handle_window_event_UPP, | 8444 | if (handle_window_eventUPP == NULL) |
| 8341 | GetEventTypeCount (specs), specs, | 8445 | handle_window_eventUPP = NewEventHandlerUPP (mac_handle_window_event); |
| 8342 | NULL, NULL); | 8446 | if (handle_mouse_eventUPP == NULL) |
| 8447 | handle_mouse_eventUPP = NewEventHandlerUPP (mac_handle_mouse_event); | ||
| 8448 | err = InstallWindowEventHandler (window, handle_window_eventUPP, | ||
| 8449 | GetEventTypeCount (specs_window), | ||
| 8450 | specs_window, NULL, NULL); | ||
| 8451 | if (err == noErr) | ||
| 8452 | err = InstallWindowEventHandler (window, handle_mouse_eventUPP, | ||
| 8453 | GetEventTypeCount (specs_mouse), | ||
| 8454 | specs_mouse, NULL, NULL); | ||
| 8343 | #endif | 8455 | #endif |
| 8344 | #if TARGET_API_MAC_CARBON | 8456 | #if TARGET_API_MAC_CARBON |
| 8345 | if (mac_do_track_dragUPP == NULL) | 8457 | if (mac_do_track_dragUPP == NULL) |
| @@ -8891,68 +9003,19 @@ XTread_socket (sd, expected, hold_quit) | |||
| 8891 | #if USE_CARBON_EVENTS | 9003 | #if USE_CARBON_EVENTS |
| 8892 | /* Handle new events */ | 9004 | /* Handle new events */ |
| 8893 | if (!mac_convert_event_ref (eventRef, &er)) | 9005 | if (!mac_convert_event_ref (eventRef, &er)) |
| 8894 | switch (GetEventClass (eventRef)) | 9006 | { |
| 8895 | { | 9007 | /* There used to be a handler for the kEventMouseWheelMoved |
| 8896 | case kEventClassWindow: | 9008 | event here. But as of Mac OS X 10.4, this kind of event |
| 8897 | if (GetEventKind (eventRef) == kEventWindowBoundsChanged) | 9009 | is not directly posted to the main event queue by |
| 8898 | { | 9010 | two-finger scrolling on the trackpad. Instead, some |
| 8899 | WindowPtr window_ptr; | 9011 | private event is posted and it is converted to a wheel |
| 8900 | GetEventParameter(eventRef, kEventParamDirectObject, | 9012 | event by the default handler for the application target. |
| 8901 | typeWindowRef, NULL, sizeof(WindowPtr), | 9013 | The converted one can be received by a Carbon event |
| 8902 | NULL, &window_ptr); | 9014 | handler installed on a window target. */ |
| 8903 | f = mac_window_to_frame (window_ptr); | 9015 | read_socket_inev = &inev; |
| 8904 | if (f && !f->async_iconified) | 9016 | SendEventToEventTarget (eventRef, toolbox_dispatcher); |
| 8905 | x_real_positions (f, &f->left_pos, &f->top_pos); | 9017 | read_socket_inev = NULL; |
| 8906 | SendEventToEventTarget (eventRef, toolbox_dispatcher); | 9018 | } |
| 8907 | } | ||
| 8908 | break; | ||
| 8909 | case kEventClassMouse: | ||
| 8910 | if (GetEventKind (eventRef) == kEventMouseWheelMoved) | ||
| 8911 | { | ||
| 8912 | SInt32 delta; | ||
| 8913 | Point point; | ||
| 8914 | struct frame *f = mac_focus_frame (dpyinfo); | ||
| 8915 | WindowPtr window_ptr; | ||
| 8916 | |||
| 8917 | #if 0 | ||
| 8918 | if (dpyinfo->x_focus_frame == NULL) | ||
| 8919 | { | ||
| 8920 | /* Beep if wheel move occurs when all the frames | ||
| 8921 | are invisible. */ | ||
| 8922 | SysBeep(1); | ||
| 8923 | break; | ||
| 8924 | } | ||
| 8925 | #endif | ||
| 8926 | |||
| 8927 | GetEventParameter(eventRef, kEventParamMouseWheelDelta, | ||
| 8928 | typeSInt32, NULL, sizeof (SInt32), | ||
| 8929 | NULL, &delta); | ||
| 8930 | GetEventParameter(eventRef, kEventParamMouseLocation, | ||
| 8931 | typeQDPoint, NULL, sizeof (Point), | ||
| 8932 | NULL, &point); | ||
| 8933 | inev.kind = WHEEL_EVENT; | ||
| 8934 | inev.code = 0; | ||
| 8935 | inev.modifiers = (mac_event_to_emacs_modifiers (eventRef) | ||
| 8936 | | ((delta < 0) ? down_modifier | ||
| 8937 | : up_modifier)); | ||
| 8938 | window_ptr = FRAME_MAC_WINDOW (f); | ||
| 8939 | SetPortWindowPort (window_ptr); | ||
| 8940 | GlobalToLocal (&point); | ||
| 8941 | XSETINT (inev.x, point.h); | ||
| 8942 | XSETINT (inev.y, point.v); | ||
| 8943 | XSETFRAME (inev.frame_or_window, | ||
| 8944 | mac_window_to_frame (window_ptr)); | ||
| 8945 | inev.timestamp = EventTimeToTicks (GetEventTime (eventRef))*(1000/60); | ||
| 8946 | } | ||
| 8947 | else | ||
| 8948 | SendEventToEventTarget (eventRef, toolbox_dispatcher); | ||
| 8949 | |||
| 8950 | break; | ||
| 8951 | |||
| 8952 | default: | ||
| 8953 | /* Send the event to the appropriate receiver. */ | ||
| 8954 | SendEventToEventTarget (eventRef, toolbox_dispatcher); | ||
| 8955 | } | ||
| 8956 | else | 9019 | else |
| 8957 | #endif /* USE_CARBON_EVENTS */ | 9020 | #endif /* USE_CARBON_EVENTS */ |
| 8958 | switch (er.what) | 9021 | switch (er.what) |
| @@ -9388,7 +9451,10 @@ XTread_socket (sd, expected, hold_quit) | |||
| 9388 | if ((!NILP (Vmac_pass_command_to_system) | 9451 | if ((!NILP (Vmac_pass_command_to_system) |
| 9389 | || !(er.modifiers & cmdKey)) | 9452 | || !(er.modifiers & cmdKey)) |
| 9390 | && (!NILP (Vmac_pass_control_to_system) | 9453 | && (!NILP (Vmac_pass_control_to_system) |
| 9391 | || !(er.modifiers & controlKey))) | 9454 | || !(er.modifiers & controlKey)) |
| 9455 | && (!NILP (Vmac_command_key_is_meta) | ||
| 9456 | && NILP (Vmac_option_modifier) | ||
| 9457 | || !(er.modifiers & optionKey))) | ||
| 9392 | if (SendEventToEventTarget (eventRef, toolbox_dispatcher) | 9458 | if (SendEventToEventTarget (eventRef, toolbox_dispatcher) |
| 9393 | != eventNotHandledErr) | 9459 | != eventNotHandledErr) |
| 9394 | break; | 9460 | break; |