diff src/macterm.c @ 91005:424b655804ca

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
author Miles Bader <miles@gnu.org>
date Mon, 13 Aug 2007 13:48:35 +0000
parents f55f9811f5d7 e5a68f18fcb9
children b83d0dadb2a7
line wrap: on
line diff
--- a/src/macterm.c	Wed Aug 08 16:39:00 2007 +0000
+++ b/src/macterm.c	Mon Aug 13 13:48:35 2007 +0000
@@ -4336,14 +4336,6 @@
 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);
 }
 
@@ -4351,14 +4343,6 @@
 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);
 }
 
@@ -6116,7 +6100,9 @@
 
       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);
@@ -9412,11 +9398,13 @@
   static const EventParamName names_sel[] = {kEventParamATSUFontID,
 					     kEventParamATSUFontSize,
 					     kEventParamFMFontFamily,
+					     kEventParamFMFontStyle,
 					     kEventParamFMFontSize,
 					     kEventParamFontColor};
   static const EventParamType types_sel[] = {typeATSUFontID,
 					     typeATSUSize,
 					     typeFMFontFamily,
+					     typeFMFontStyle,
 					     typeFMFontSize,
 					     typeFontColor};
 
@@ -10737,7 +10725,7 @@
 	{
 	  struct frame *sf = SELECTED_FRAME ();
 
-	  if (!(FRAME_MAC_P (sf)))
+	  if (!(FRAME_MAC_P (sf) && sf->async_visible))
 	    RepositionWindow (wp, NULL, kWindowCenterOnMainScreen);
 	  else
 	    {
@@ -10752,8 +10740,11 @@
 	      /* This is a workaround.  RepositionWindow fails to put
 		 a window at the cascading position when its parent
 		 window has a Carbon HIToolbar.  */
-	      if (f->top_pos == sf->top_pos && f->left_pos == sf->left_pos)
-		MoveWindowStructure (wp,  f->left_pos + 10, f->top_pos + 32);
+	      if ((f->left_pos == sf->left_pos
+		   && f->top_pos == sf->top_pos)
+		  || (f->left_pos == sf->left_pos + 10 * 2
+		      && f->top_pos == sf->top_pos + 32 * 2))
+		MoveWindowStructure (wp, sf->left_pos + 10, sf->top_pos + 32);
 #endif
 	    }
 	  result = noErr;
@@ -10978,7 +10969,7 @@
      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);
@@ -10987,32 +10978,16 @@
     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)
@@ -11037,6 +11012,12 @@
       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)
@@ -12183,7 +12164,7 @@
 			  /* Window will be selected only when it is
 			     not selected now and last mouse movement
 			     event was not in it.  Minibuffer window
-			     will be selected iff it is active.  */
+			     will be selected only when it is active.  */
 			  if (WINDOWP (window)
 			      && !EQ (window, last_window)
 			      && !EQ (window, selected_window))
@@ -12218,6 +12199,8 @@
 	case activateEvt:
 	  {
 	    WindowRef window_ptr = (WindowRef) er.message;
+	    OSErr err;
+	    ControlRef root_control;
 
 	    if (window_ptr == tip_window)
 	      {
@@ -12235,6 +12218,10 @@
 		/* 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
@@ -12250,6 +12237,10 @@
 	    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)
 		  {
@@ -12305,13 +12296,29 @@
 	      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);
-#endif
+	    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:
@@ -12365,7 +12372,6 @@
 	    }
 	  count++;
 	}
-
     }
 
   /* If the focus was just given to an autoraising frame,