comparison src/macterm.c @ 61786:223bdb2c3b9a

(handling_window_update, terminate_flag): Remove variables. (do_window_update, do_ae_quit_application, XTread_socket): Don't use them. (WNE_SLEEP_AT_SUSPEND, WNE_SLEEP_AT_RESUME): Don't define. [USE_CARBON_EVENTS && MAC_OSX] (mac_handle_service_event) (init_service_handler): Move to macselect.c. Remove declarations. [USE_CARBON_EVENTS && MAC_OSX] (init_service_handler): Add extern. (Qapplication, Qabout): New variables. (syms_of_mac): Initialize them. [USE_CARBON_EVENTS && MAC_OSX] (Qpreferences, Qservices, Qpaste) (Qperform): New variables. (syms_of_mac) [USE_CARBON_EVENTS && MAC_OSX]: Initialize them. (do_get_menus) [!TARGET_API_MAC_CARBON]: Don't call AppendResMenu. (do_menu_choice): Unhighlight menu bar also when menu_id is 0. (mac_store_application_menu_event, init_menu_bar): New functions. [USE_CARBON_EVENTS] (mac_handle_command_event) (init_command_handler): New functions. (mac_handle_window_event): Return noErr on window update event. (do_ae_quit_application): Call mac_store_application_menu_event. (mac_initialize) [USE_CARBON_EVENTS]: Call init_command_handler and init_menu_bar.
author YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
date Sun, 24 Apr 2005 06:06:39 +0000
parents 38a086380ddc
children 2d42fd79f829 ad07ff6e4555 08185296b491
comparison
equal deleted inserted replaced
61785:6e608d2306b0 61786:223bdb2c3b9a
7086 #define DEFAULT_NUM_COLS 80 7086 #define DEFAULT_NUM_COLS 80
7087 7087
7088 #define MIN_DOC_SIZE 64 7088 #define MIN_DOC_SIZE 64
7089 #define MAX_DOC_SIZE 32767 7089 #define MAX_DOC_SIZE 32767
7090 7090
7091 #if 0
7091 /* sleep time for WaitNextEvent */ 7092 /* sleep time for WaitNextEvent */
7092 #define WNE_SLEEP_AT_SUSPEND 10 7093 #define WNE_SLEEP_AT_SUSPEND 10
7093 #define WNE_SLEEP_AT_RESUME 1 7094 #define WNE_SLEEP_AT_RESUME 1
7094 7095
7095 /* true when cannot handle any Mac OS events */
7096 static int handling_window_update = 0;
7097
7098 #if 0
7099 /* the flag appl_is_suspended is used both for determining the sleep 7096 /* the flag appl_is_suspended is used both for determining the sleep
7100 time to be passed to WaitNextEvent and whether the cursor should be 7097 time to be passed to WaitNextEvent and whether the cursor should be
7101 drawn when updating the display. The cursor is turned off when 7098 drawn when updating the display. The cursor is turned off when
7102 Emacs is suspended. Redrawing it is unnecessary and what needs to 7099 Emacs is suspended. Redrawing it is unnecessary and what needs to
7103 be done depends on whether the cursor lies inside or outside the 7100 be done depends on whether the cursor lies inside or outside the
7111 7108
7112 #define ARGV_STRING_LIST_ID 129 7109 #define ARGV_STRING_LIST_ID 129
7113 #define ABOUT_ALERT_ID 128 7110 #define ABOUT_ALERT_ID 128
7114 #define RAM_TOO_LARGE_ALERT_ID 129 7111 #define RAM_TOO_LARGE_ALERT_ID 129
7115 7112
7116 Boolean terminate_flag = false;
7117
7118 /* Contains the string "reverse", which is a constant for mouse button emu.*/ 7113 /* Contains the string "reverse", which is a constant for mouse button emu.*/
7119 Lisp_Object Qreverse; 7114 Lisp_Object Qreverse;
7120 7115
7121 /* True if using command key as meta key. */ 7116 /* True if using command key as meta key. */
7122 Lisp_Object Vmac_command_key_is_meta; 7117 Lisp_Object Vmac_command_key_is_meta;
7168 static pascal OSErr mac_do_receive_drag (WindowPtr, void*, DragReference); 7163 static pascal OSErr mac_do_receive_drag (WindowPtr, void*, DragReference);
7169 static DragTrackingHandlerUPP mac_do_track_dragUPP = NULL; 7164 static DragTrackingHandlerUPP mac_do_track_dragUPP = NULL;
7170 static DragReceiveHandlerUPP mac_do_receive_dragUPP = NULL; 7165 static DragReceiveHandlerUPP mac_do_receive_dragUPP = NULL;
7171 #endif 7166 #endif
7172 7167
7168 static Lisp_Object Qapplication, Qabout;
7173 #if USE_CARBON_EVENTS 7169 #if USE_CARBON_EVENTS
7174 #ifdef MAC_OSX 7170 #ifdef MAC_OSX
7175 /* Preliminary Support for the OSX Services Menu */ 7171 extern void init_service_handler ();
7176 static OSStatus mac_handle_service_event (EventHandlerCallRef,EventRef,void*); 7172 static Lisp_Object Qpreferences, Qservices, Qpaste, Qperform;
7177 static void init_service_handler ();
7178 #endif 7173 #endif
7179 /* Window Event Handler */ 7174 /* Window Event Handler */
7180 static pascal OSStatus mac_handle_window_event (EventHandlerCallRef, 7175 static pascal OSStatus mac_handle_window_event (EventHandlerCallRef,
7181 EventRef, void *); 7176 EventRef, void *);
7182 #endif 7177 #endif
7330 if(menubar_handle == NULL) 7325 if(menubar_handle == NULL)
7331 abort (); 7326 abort ();
7332 SetMenuBar (menubar_handle); 7327 SetMenuBar (menubar_handle);
7333 DrawMenuBar (); 7328 DrawMenuBar ();
7334 7329
7330 #if !TARGET_API_MAC_CARBON
7335 menu_handle = GetMenuHandle (M_APPLE); 7331 menu_handle = GetMenuHandle (M_APPLE);
7336 if(menu_handle != NULL) 7332 if(menu_handle != NULL)
7337 AppendResMenu (menu_handle,'DRVR'); 7333 AppendResMenu (menu_handle,'DRVR');
7338 else 7334 else
7339 abort (); 7335 abort ();
7336 #endif
7340 } 7337 }
7341 7338
7342 7339
7343 static void 7340 static void
7344 do_init_managers (void) 7341 do_init_managers (void)
7406 } 7403 }
7407 else 7404 else
7408 { 7405 {
7409 Rect r; 7406 Rect r;
7410 7407
7411 handling_window_update = 1;
7412
7413 #if TARGET_API_MAC_CARBON 7408 #if TARGET_API_MAC_CARBON
7414 { 7409 {
7415 RgnHandle region = NewRgn (); 7410 RgnHandle region = NewRgn ();
7416 7411
7417 GetPortVisibleRegion (GetWindowPort (win), region); 7412 GetPortVisibleRegion (GetWindowPort (win), region);
7423 #else 7418 #else
7424 r = (*win->visRgn)->rgnBBox; 7419 r = (*win->visRgn)->rgnBBox;
7425 expose_frame (f, r.left, r.top, r.right - r.left, r.bottom - r.top); 7420 expose_frame (f, r.left, r.top, r.right - r.left, r.bottom - r.top);
7426 UpdateControls (win, win->visRgn); 7421 UpdateControls (win, win->visRgn);
7427 #endif 7422 #endif
7428
7429 handling_window_update = 0;
7430 } 7423 }
7431 } 7424 }
7432 7425
7433 EndUpdate (win); 7426 EndUpdate (win);
7434 } 7427 }
7493 SInt16 menu_id, menu_item; 7486 SInt16 menu_id, menu_item;
7494 7487
7495 menu_id = HiWord (menu_choice); 7488 menu_id = HiWord (menu_choice);
7496 menu_item = LoWord (menu_choice); 7489 menu_item = LoWord (menu_choice);
7497 7490
7498 if (menu_id == 0)
7499 return;
7500
7501 switch (menu_id) 7491 switch (menu_id)
7502 { 7492 {
7493 case 0:
7494 break;
7495
7503 case M_APPLE: 7496 case M_APPLE:
7504 do_apple_menu (menu_item); 7497 do_apple_menu (menu_item);
7505 break; 7498 break;
7506 7499
7507 default: 7500 default:
7747 #endif 7740 #endif
7748 if (err != noErr) 7741 if (err != noErr)
7749 abort (); 7742 abort ();
7750 } 7743 }
7751 7744
7745 void
7746 mac_store_application_menu_event (event)
7752 #if USE_CARBON_EVENTS 7747 #if USE_CARBON_EVENTS
7748 EventRef event;
7749 #else
7750 UInt32 event;
7751 #endif
7752 {
7753 struct input_event buf;
7754 Lisp_Object frame, entry;
7755
7756 EVENT_INIT (buf);
7757
7758 XSETFRAME (frame, mac_focus_frame (&one_mac_display_info));
7759 buf.kind = MENU_BAR_EVENT;
7760 buf.frame_or_window = frame;
7761 buf.arg = frame;
7762 kbd_buffer_store_event (&buf);
7763
7764 buf.arg = Qapplication;
7765 kbd_buffer_store_event (&buf);
7766
7767 #if USE_CARBON_EVENTS
7768 switch (GetEventClass (event))
7769 {
7753 #ifdef MAC_OSX 7770 #ifdef MAC_OSX
7754 void 7771 case kEventClassService:
7755 init_service_handler () 7772 buf.arg = Qservices;
7756 { 7773 kbd_buffer_store_event (&buf);
7757 EventTypeSpec specs[] = {{kEventClassService, kEventServiceGetTypes}, 7774 switch (GetEventKind (event))
7758 {kEventClassService, kEventServiceCopy}, 7775 {
7759 {kEventClassService, kEventServicePaste}}; 7776 case kEventServicePaste:
7760 InstallApplicationEventHandler (NewEventHandlerUPP (mac_handle_service_event), 7777 entry = Qpaste;
7761 3, specs, NULL, NULL); 7778 break;
7762 } 7779
7763 7780 case kEventServicePerform:
7764 /* 7781 {
7765 MAC_TODO: Check to see if this is called by AEProcessDesc... 7782 OSErr err;
7766 */ 7783 CFStringRef message;
7767 OSStatus 7784
7768 mac_handle_service_event (EventHandlerCallRef callRef, 7785 err = GetEventParameter (event, kEventParamServiceMessageName,
7769 EventRef event, void *data) 7786 typeCFStringRef, NULL,
7770 { 7787 sizeof (CFStringRef), NULL, &message);
7771 OSStatus err = noErr; 7788 buf.arg = Qperform;
7772 switch (GetEventKind (event)) 7789 kbd_buffer_store_event (&buf);
7773 { 7790 if (err == noErr && message)
7774 case kEventServiceGetTypes: 7791 entry = intern (SDATA (cfstring_to_lisp (message)));
7792 else
7793 entry = Qnil;
7794 }
7795 break;
7796
7797 default:
7798 abort ();
7799 }
7800 break;
7801 #endif /* MAC_OSX */
7802 case kEventClassCommand:
7775 { 7803 {
7776 CFMutableArrayRef copyTypes, pasteTypes; 7804 HICommand command;
7777 CFStringRef type; 7805
7778 Boolean selection = true; 7806 GetEventParameter(event, kEventParamDirectObject, typeHICommand,
7779 /* 7807 NULL, sizeof (HICommand), NULL, &command);
7780 GetEventParameter(event, kEventParamServicePasteTypes, 7808 switch (command.commandID)
7781 typeCFMutableArrayRef, NULL, 7809 {
7782 sizeof (CFMutableArrayRef), NULL, &pasteTypes); 7810 case kHICommandAbout:
7783 */ 7811 entry = Qabout;
7784 GetEventParameter(event, kEventParamServiceCopyTypes, 7812 break;
7785 typeCFMutableArrayRef, NULL, 7813 #ifdef MAC_OSX
7786 sizeof (CFMutableArrayRef), NULL, &copyTypes); 7814 case kHICommandPreferences:
7787 type = CreateTypeStringWithOSType (kScrapFlavorTypeText); 7815 entry = Qpreferences;
7788 if (type) { 7816 break;
7789 CFArrayAppendValue (copyTypes, type); 7817 #endif /* MAC_OSX */
7790 //CFArrayAppendValue (pasteTypes, type); 7818 case kHICommandQuit:
7791 CFRelease (type); 7819 entry = Qquit;
7792 } 7820 break;
7821 default:
7822 abort ();
7823 }
7793 } 7824 }
7794 case kEventServiceCopy: 7825 break;
7795 { 7826
7796 ScrapRef currentScrap, specificScrap; 7827 default:
7797 char * buf = ""; 7828 abort ();
7798 Size byteCount = 0; 7829 }
7799 7830 #else /* USE_CARBON_EVENTS */
7800 GetCurrentScrap (&currentScrap); 7831 switch (event)
7801 7832 {
7802 err = GetScrapFlavorSize (currentScrap, kScrapFlavorTypeText, &byteCount); 7833 case kHICommandAbout:
7803 if (err == noErr) 7834 entry = Qabout;
7804 { 7835 break;
7805 void *buffer = xmalloc (byteCount); 7836 case kHICommandQuit:
7806 if (buffer != NULL) 7837 entry = Qquit;
7807 { 7838 break;
7808 GetEventParameter (event, kEventParamScrapRef, typeScrapRef, NULL, 7839 default:
7809 sizeof (ScrapRef), NULL, &specificScrap); 7840 abort ();
7810 7841 }
7811 err = GetScrapFlavorData (currentScrap, kScrapFlavorTypeText, 7842 #endif
7812 &byteCount, buffer); 7843
7813 if (err == noErr) 7844 buf.arg = entry;
7814 PutScrapFlavor (specificScrap, kScrapFlavorTypeText, 7845 kbd_buffer_store_event (&buf);
7815 kScrapFlavorMaskNone, byteCount, buffer); 7846 }
7816 xfree (buffer); 7847
7817 } 7848 #if USE_CARBON_EVENTS
7818 } 7849 static pascal OSStatus
7819 err = noErr; 7850 mac_handle_command_event (next_handler, event, data)
7820 } 7851 EventHandlerCallRef next_handler;
7821 case kEventServicePaste: 7852 EventRef event;
7822 { 7853 void *data;
7823 /* 7854 {
7824 // Get the current location 7855 HICommand command;
7825 Size byteCount; 7856 OSErr result;
7826 ScrapRef specificScrap; 7857
7827 GetEventParameter(event, kEventParamScrapRef, typeScrapRef, NULL, 7858 GetEventParameter(event, kEventParamDirectObject, typeHICommand, NULL,
7828 sizeof(ScrapRef), NULL, &specificScrap); 7859 sizeof (HICommand), NULL, &command);
7829 err = GetScrapFlavorSize(specificScrap, kScrapFlavorTypeText, &byteCount); 7860
7830 if (err == noErr) { 7861 switch (command.commandID)
7831 void * buffer = xmalloc(byteCount); 7862 {
7832 if (buffer != NULL ) { 7863 case kHICommandAbout:
7833 err = GetScrapFlavorData(specificScrap, kScrapFlavorTypeText, 7864 #ifdef MAC_OSX
7834 &byteCount, buffer); 7865 case kHICommandPreferences:
7835 if (err == noErr) { 7866 #endif /* MAC_OSX */
7836 // Actually place in the buffer 7867 result = CallNextEventHandler (next_handler, event);
7837 BLOCK_INPUT; 7868 if (result != eventNotHandledErr)
7838 // Get the current "selection" string here 7869 return result;
7839 UNBLOCK_INPUT; 7870
7840 } 7871 mac_store_application_menu_event (event);
7841 } 7872 return noErr;
7842 xfree(buffer); 7873
7843 } 7874 default:
7844 */ 7875 break;
7845 } 7876 }
7846 } 7877
7847 return err; 7878 return eventNotHandledErr;
7848 } 7879 }
7849 #endif 7880
7881 static OSErr
7882 init_command_handler (window)
7883 WindowPtr window;
7884 {
7885 OSErr err = noErr;
7886 EventTypeSpec specs[] = {{kEventClassCommand, kEventCommandProcess}};
7887 static EventHandlerUPP handle_command_eventUPP = NULL;
7888
7889 if (handle_command_eventUPP == NULL)
7890 handle_command_eventUPP = NewEventHandlerUPP (mac_handle_command_event);
7891 return InstallApplicationEventHandler (handle_command_eventUPP,
7892 GetEventTypeCount (specs), specs,
7893 NULL, NULL);
7894 }
7850 7895
7851 static pascal OSStatus 7896 static pascal OSStatus
7852 mac_handle_window_event (next_handler, event, data) 7897 mac_handle_window_event (next_handler, event, data)
7853 EventHandlerCallRef next_handler; 7898 EventHandlerCallRef next_handler;
7854 EventRef event; 7899 EventRef event;
7868 result = CallNextEventHandler (next_handler, event); 7913 result = CallNextEventHandler (next_handler, event);
7869 if (result != eventNotHandledErr) 7914 if (result != eventNotHandledErr)
7870 return result; 7915 return result;
7871 7916
7872 do_window_update (wp); 7917 do_window_update (wp);
7873 break; 7918 return noErr;
7874 7919
7875 case kEventWindowBoundsChanging: 7920 case kEventWindowBoundsChanging:
7876 result = CallNextEventHandler (next_handler, event); 7921 result = CallNextEventHandler (next_handler, event);
7877 if (result != eventNotHandledErr) 7922 if (result != eventNotHandledErr)
7878 return result; 7923 return result;
8247 8292
8248 8293
8249 static pascal OSErr 8294 static pascal OSErr
8250 do_ae_quit_application (AppleEvent* message, AppleEvent *reply, long refcon) 8295 do_ae_quit_application (AppleEvent* message, AppleEvent *reply, long refcon)
8251 { 8296 {
8252 /* FixMe: Do we need an unwind-protect or something here? And what 8297 #if USE_CARBON_EVENTS
8253 do we do about unsaved files. Currently just forces quit rather 8298 OSErr err;
8254 than doing recursive callback to get user input. */ 8299 EventRef event = NULL;
8255 8300 static const HICommand quit_command = {kEventAttributeNone, kHICommandQuit};
8256 terminate_flag = true; 8301
8257 8302 err = CreateEvent (NULL, kEventClassCommand, kEventCommandProcess, 0,
8258 /* Fkill_emacs doesn't return. We have to return. (TI) */ 8303 kEventAttributeUserEvent, &event);
8304 if (err == noErr)
8305 err = SetEventParameter (event, kEventParamDirectObject, typeHICommand,
8306 sizeof (HICommand), &quit_command);
8307 if (err == noErr)
8308 mac_store_application_menu_event (event);
8309 if (event)
8310 ReleaseEvent (event);
8311
8312 if (err == noErr)
8313 return noErr;
8314 else
8315 return errAEEventNotHandled;
8316 #else
8317 mac_store_application_menu_event (kHICommandQuit);
8318
8259 return noErr; 8319 return noErr;
8320 #endif
8260 } 8321 }
8261 8322
8262 8323
8263 #if __profile__ 8324 #if __profile__
8264 void 8325 void
8453 interrupt_input_pending = 0; 8514 interrupt_input_pending = 0;
8454 BLOCK_INPUT; 8515 BLOCK_INPUT;
8455 8516
8456 /* So people can tell when we have read the available input. */ 8517 /* So people can tell when we have read the available input. */
8457 input_signal_count++; 8518 input_signal_count++;
8458
8459 /* Don't poll for events to process (specifically updateEvt) if
8460 window update currently already in progress. A call to redisplay
8461 (in do_window_update) can be preempted by another call to
8462 redisplay, causing blank regions to be left on the screen and the
8463 cursor to be left at strange places. */
8464 if (handling_window_update)
8465 {
8466 UNBLOCK_INPUT;
8467 return 0;
8468 }
8469
8470 if (terminate_flag)
8471 Fkill_emacs (make_number (1));
8472 8519
8473 #if USE_CARBON_EVENTS 8520 #if USE_CARBON_EVENTS
8474 toolbox_dispatcher = GetEventDispatcherTarget (); 8521 toolbox_dispatcher = GetEventDispatcherTarget ();
8475 8522
8476 while (!ReceiveNextEvent (0, NULL, kEventDurationNoWait, 8523 while (!ReceiveNextEvent (0, NULL, kEventDurationNoWait,
9560 RemoveEventFromQueue (GetMainEventQueue (), event); 9607 RemoveEventFromQueue (GetMainEventQueue (), event);
9561 ReleaseEvent (event); 9608 ReleaseEvent (event);
9562 kbd_buffer_store_event (&e); 9609 kbd_buffer_store_event (&e);
9563 } 9610 }
9564 } 9611 }
9565
9566 #endif /* MAC_OSX */ 9612 #endif /* MAC_OSX */
9613
9614 static void
9615 init_menu_bar ()
9616 {
9617 #ifdef MAC_OSX
9618 OSErr err;
9619 MenuRef menu;
9620 MenuItemIndex menu_index;
9621
9622 err = GetIndMenuItemWithCommandID (NULL, kHICommandQuit, 1,
9623 &menu, &menu_index);
9624 if (err == noErr)
9625 SetMenuItemCommandKey (menu, menu_index, false, 0);
9626 #if USE_CARBON_EVENTS
9627 EnableMenuCommand (NULL, kHICommandPreferences);
9628 err = GetIndMenuItemWithCommandID (NULL, kHICommandPreferences, 1,
9629 &menu, &menu_index);
9630 if (err == noErr)
9631 {
9632 SetMenuItemCommandKey (menu, menu_index, false, 0);
9633 InsertMenuItemTextWithCFString (menu, NULL,
9634 0, kMenuItemAttrSeparator, 0);
9635 InsertMenuItemTextWithCFString (menu, CFSTR ("About Emacs"),
9636 0, 0, kHICommandAbout);
9637 }
9638 #endif /* USE_CARBON_EVENTS */
9639 #else /* !MAC_OSX */
9640 #if USE_CARBON_EVENTS
9641 SetMenuItemCommandID (GetMenuHandle (M_APPLE), I_ABOUT, kHICommandAbout);
9642 #endif
9643 #endif
9644 }
9645
9567 9646
9568 /* Set up use of X before we make the first connection. */ 9647 /* Set up use of X before we make the first connection. */
9569 9648
9570 extern frame_parm_handler mac_frame_parm_handlers[]; 9649 extern frame_parm_handler mac_frame_parm_handlers[];
9571 9650
9679 BLOCK_INPUT; 9758 BLOCK_INPUT;
9680 9759
9681 #if TARGET_API_MAC_CARBON 9760 #if TARGET_API_MAC_CARBON
9682 init_required_apple_events (); 9761 init_required_apple_events ();
9683 9762
9684 #if USE_CARBON_EVENTS && defined (MAC_OSX) 9763 #if USE_CARBON_EVENTS
9764 #ifdef MAC_OSX
9685 init_service_handler (); 9765 init_service_handler ();
9686 9766
9687 init_quit_char_handler (); 9767 init_quit_char_handler ();
9688 #endif 9768 #endif /* MAC_OSX */
9689 9769
9690 DisableMenuCommand (NULL, kHICommandQuit); 9770 init_command_handler ();
9771
9772 init_menu_bar ();
9773 #endif /* USE_CARBON_EVENTS */
9691 9774
9692 #ifdef MAC_OSX 9775 #ifdef MAC_OSX
9693 if (!inhibit_window_system) 9776 if (!inhibit_window_system)
9694 MakeMeTheFrontProcess (); 9777 MakeMeTheFrontProcess ();
9695 #endif 9778 #endif
9711 Fput (Qalt, Qmodifier_value, make_number (alt_modifier)); 9794 Fput (Qalt, Qmodifier_value, make_number (alt_modifier));
9712 Qhyper = intern ("hyper"); 9795 Qhyper = intern ("hyper");
9713 Fput (Qhyper, Qmodifier_value, make_number (hyper_modifier)); 9796 Fput (Qhyper, Qmodifier_value, make_number (hyper_modifier));
9714 Qsuper = intern ("super"); 9797 Qsuper = intern ("super");
9715 Fput (Qsuper, Qmodifier_value, make_number (super_modifier)); 9798 Fput (Qsuper, Qmodifier_value, make_number (super_modifier));
9799
9800 Qapplication = intern ("application"); staticpro (&Qapplication);
9801 Qabout = intern ("about"); staticpro (&Qabout);
9802
9803 #if USE_CARBON_EVENTS && defined (MAC_OSX)
9804 Qpreferences = intern ("preferences"); staticpro (&Qpreferences);
9805 Qservices = intern ("services"); staticpro (&Qservices);
9806 Qpaste = intern ("paste"); staticpro (&Qpaste);
9807 Qperform = intern ("perform"); staticpro (&Qperform);
9808 #endif
9716 9809
9717 #ifdef MAC_OSX 9810 #ifdef MAC_OSX
9718 Fprovide (intern ("mac-carbon"), Qnil); 9811 Fprovide (intern ("mac-carbon"), Qnil);
9719 #endif 9812 #endif
9720 9813