From 7b7d07bbfa32c89bc1fcb3a829940921106f575a Mon Sep 17 00:00:00 2001 From: YAMAMOTO Mitsuharu Date: Thu, 9 Aug 2007 03:07:26 +0000 Subject: [PATCH] (frame_highlight, frame_unhighlight): Don't call ActivateControl/DeactivateControl here. [USE_MAC_TOOLBAR] (free_frame_tool_bar): Suppress animation when frame-notice-user-settings is non-nil. [USE_MAC_FONT_PANEL] (mac_handle_font_event): Also record parameter for kEventParamFMFontStyle. [TARGET_API_MAC_CARBON] (mac_handle_keyboard_event): Don't check mac_pass_command_to_system and mac_pass_control_to_system here. (XTread_socket): Call ActivateControl/DeactivateControl here. (XTread_socket) [TARGET_API_MAC_CARBON]: Check mac_pass_command_to_system and mac_pass_control_to_system here. --- src/ChangeLog | 20 +++++++++-- src/macterm.c | 95 ++++++++++++++++++++++++++------------------------- 2 files changed, 67 insertions(+), 48 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index 09631c23e61..e07c4696c9e 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,19 @@ +2007-08-09 YAMAMOTO Mitsuharu + + * gmalloc.c (posix_memalign): New function. + + * macterm.c (frame_highlight, frame_unhighlight): Don't call + ActivateControl/DeactivateControl here. + [USE_MAC_TOOLBAR] (free_frame_tool_bar): Suppress animation when + frame-notice-user-settings is non-nil. + [USE_MAC_FONT_PANEL] (mac_handle_font_event): Also record parameter + for kEventParamFMFontStyle. + [TARGET_API_MAC_CARBON] (mac_handle_keyboard_event): Don't check + mac_pass_command_to_system and mac_pass_control_to_system here. + (XTread_socket): Call ActivateControl/DeactivateControl here. + (XTread_socket) [TARGET_API_MAC_CARBON]: + Check mac_pass_command_to_system and mac_pass_control_to_system here. + 2007-08-07 Chong Yidong * xdisp.c (move_it_by_lines): Remove incorrect optimization. @@ -20,8 +36,8 @@ Call malloc_enable_thread on interactive startup. * gmalloc.c (_malloc_thread_enabled_p) [USE_PTHREAD]: New variable. - [USE_PTHREAD] (LOCK, UNLOCK, LOCK_ALIGNED_BLOCKS) - (UNLOCK_ALIGNED_BLOCKS): Conditionalize with it. + (LOCK, UNLOCK, LOCK_ALIGNED_BLOCKS, UNLOCK_ALIGNED_BLOCKS) + [USE_PTHREAD]: Conditionalize with it. (malloc_atfork_handler_prepare, malloc_atfork_handler_parent) (malloc_atfork_handler_child, malloc_enable_thread) [USE_PTHREAD]: New functions. diff --git a/src/macterm.c b/src/macterm.c index 1fd4ee308b1..d1d9205d5dc 100644 --- a/src/macterm.c +++ b/src/macterm.c @@ -4334,14 +4334,6 @@ static void frame_highlight (f) struct frame *f; { - OSErr err; - ControlRef root_control; - - BLOCK_INPUT; - err = GetRootControl (FRAME_MAC_WINDOW (f), &root_control); - if (err == noErr) - ActivateControl (root_control); - UNBLOCK_INPUT; x_update_cursor (f, 1); } @@ -4349,14 +4341,6 @@ static void frame_unhighlight (f) struct frame *f; { - OSErr err; - ControlRef root_control; - - BLOCK_INPUT; - err = GetRootControl (FRAME_MAC_WINDOW (f), &root_control); - if (err == noErr) - DeactivateControl (root_control); - UNBLOCK_INPUT; x_update_cursor (f, 1); } @@ -6114,7 +6098,9 @@ free_frame_tool_bar (f) BLOCK_INPUT; ShowHideWindowToolbar (FRAME_MAC_WINDOW (f), false, - f == mac_focus_frame (dpyinfo)); + (NILP (Fsymbol_value + (intern ("frame-notice-user-settings"))) + && f == mac_focus_frame (dpyinfo))); /* Mac OS X 10.3 does not issue kEventWindowBoundsChanged events on toolbar visibility change. */ mac_handle_origin_change (f); @@ -9391,11 +9377,13 @@ mac_handle_font_event (next_handler, event, data) static const EventParamName names_sel[] = {kEventParamATSUFontID, kEventParamATSUFontSize, kEventParamFMFontFamily, + kEventParamFMFontStyle, kEventParamFMFontSize, kEventParamFontColor}; static const EventParamType types_sel[] = {typeATSUFontID, typeATSUSize, typeFMFontFamily, + typeFMFontStyle, typeFMFontSize, typeFontColor}; @@ -10957,7 +10945,7 @@ mac_handle_keyboard_event (next_handler, event, data) void *data; { OSStatus err, result = eventNotHandledErr; - UInt32 event_kind, key_code, modifiers, mapped_modifiers; + UInt32 event_kind, key_code, modifiers; unsigned char char_code; event_kind = GetEventKind (event); @@ -10966,32 +10954,16 @@ mac_handle_keyboard_event (next_handler, event, data) case kEventRawKeyDown: case kEventRawKeyRepeat: case kEventRawKeyUp: - if (read_socket_inev == NULL) - { - result = CallNextEventHandler (next_handler, event); - break; - } - - err = GetEventParameter (event, kEventParamKeyModifiers, - typeUInt32, NULL, - sizeof (UInt32), NULL, &modifiers); - if (err != noErr) - break; - - mapped_modifiers = mac_mapped_modifiers (modifiers); - /* When using Carbon Events, we need to pass raw keyboard events to the TSM ourselves. If TSM handles it, it will pass back noErr, otherwise it will pass back "eventNotHandledErr" and we can process it normally. */ - if (!(mapped_modifiers - & ~(mac_pass_command_to_system ? cmdKey : 0) - & ~(mac_pass_control_to_system ? controlKey : 0))) - { - result = CallNextEventHandler (next_handler, event); - if (result != eventNotHandledErr) - break; - } + result = CallNextEventHandler (next_handler, event); + if (result != eventNotHandledErr) + break; + + if (read_socket_inev == NULL) + break; #if USE_MAC_TSM if (read_socket_inev->kind != NO_EVENT) @@ -11016,6 +10988,12 @@ mac_handle_keyboard_event (next_handler, event, data) if (err != noErr) break; + err = GetEventParameter (event, kEventParamKeyModifiers, + typeUInt32, NULL, + sizeof (UInt32), NULL, &modifiers); + if (err != noErr) + break; + do_keystroke ((event_kind == kEventRawKeyDown ? keyDown : autoKey), char_code, key_code, modifiers, ((unsigned long) @@ -12197,6 +12175,8 @@ XTread_socket (sd, expected, hold_quit) case activateEvt: { WindowRef window_ptr = (WindowRef) er.message; + OSErr err; + ControlRef root_control; if (window_ptr == tip_window) { @@ -12214,6 +12194,10 @@ XTread_socket (sd, expected, hold_quit) /* A window has been activated */ Point mouse_loc; + err = GetRootControl (FRAME_MAC_WINDOW (f), &root_control); + if (err == noErr) + ActivateControl (root_control); + x_detect_focus_change (dpyinfo, &er, &inev); mouse_loc.h = (er.where.h @@ -12229,6 +12213,10 @@ XTread_socket (sd, expected, hold_quit) else { /* A window has been deactivated */ + err = GetRootControl (FRAME_MAC_WINDOW (f), &root_control); + if (err == noErr) + DeactivateControl (root_control); + #ifdef USE_TOOLKIT_SCROLL_BARS if (dpyinfo->grabbed && tracked_scroll_bar) { @@ -12284,13 +12272,29 @@ XTread_socket (sd, expected, hold_quit) clear_mouse_face (dpyinfo); dpyinfo->mouse_face_hidden = 1; } + + { + UInt32 modifiers = er.modifiers, mapped_modifiers; + +#ifdef MAC_OSX + GetEventParameter (eventRef, kEventParamKeyModifiers, + typeUInt32, NULL, + sizeof (UInt32), NULL, &modifiers); +#endif + mapped_modifiers = mac_mapped_modifiers (modifiers); + #if TARGET_API_MAC_CARBON - goto OTHER; -#else - do_keystroke (er.what, er.message & charCodeMask, - (er.message & keyCodeMask) >> 8, - er.modifiers, timestamp, &inev); + if (!(mapped_modifiers + & ~(mac_pass_command_to_system ? cmdKey : 0) + & ~(mac_pass_control_to_system ? controlKey : 0))) + goto OTHER; + else #endif + if (er.what != keyUp) + do_keystroke (er.what, er.message & charCodeMask, + (er.message & keyCodeMask) >> 8, + modifiers, timestamp, &inev); + } break; case kHighLevelEvent: @@ -12344,7 +12348,6 @@ XTread_socket (sd, expected, hold_quit) } count++; } - } /* If the focus was just given to an autoraising frame, -- 2.39.2