changeset 75833:433bde797a0b

(Fx_focus_frame): Move current process to foreground if it is not. [TARGET_API_MAC_CARBON] (Fx_file_dialog): Replace #if MAC_OSX with #ifdef MAC_OSX. (Fmac_set_font_panel_visible_p) [USE_MAC_FONT_PANEL]: Rename from Fmac_set_font_panel_visibility. All uses changed. Rename argument VISIBLE to FLAG.
author YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
date Tue, 13 Feb 2007 08:28:31 +0000
parents 31ee92df53cf
children 3734c13d5900
files src/macfns.c
diffstat 1 files changed, 31 insertions(+), 9 deletions(-) [+]
line wrap: on
line diff
--- a/src/macfns.c	Tue Feb 13 08:28:10 2007 +0000
+++ b/src/macfns.c	Tue Feb 13 08:28:31 2007 +0000
@@ -2863,9 +2863,31 @@
      (frame)
      Lisp_Object frame;
 {
+  OSErr err;
+  ProcessSerialNumber front_psn;
+  static const ProcessSerialNumber current_psn = {0, kCurrentProcess};
+  Boolean front_p;
   struct frame *f = check_x_frame (frame);
 
   BLOCK_INPUT;
+  /* Move the current process to the foreground if it is not.  Don't
+     call SetFrontProcess if the current process is already running in
+     the foreground so as not to change the z-order of windows.  */
+  err = GetFrontProcess (&front_psn);
+  if (err == noErr)
+    err = SameProcess (&front_psn, &current_psn, &front_p);
+  if (err == noErr)
+    if (!front_p)
+      {
+#if MAC_OS_X_VERSION_MAX_ALLOWED >= 1020
+	if (FrontNonFloatingWindow () == FRAME_MAC_WINDOW (f))
+	  SetFrontProcessWithOptions (&current_psn,
+				      kSetFrontProcessFrontWindowOnly);
+	else
+#endif
+	  SetFrontProcess (&current_psn);
+      }
+
 #ifdef MAC_OSX
   ActivateWindow (ActiveNonFloatingWindow (), false);
   ActivateWindow (FRAME_MAC_WINDOW (f), true);
@@ -4513,7 +4535,7 @@
 		      filename[len++] = '/';
 		    CFStringGetCString(reply.saveFileName, filename+len,
 				       sizeof (filename) - len,
-#if MAC_OSX
+#ifdef MAC_OSX
 				       kCFStringEncodingUTF8
 #else
 				       CFStringGetSystemEncoding ()
@@ -4575,22 +4597,22 @@
 }
 
 #if USE_MAC_FONT_PANEL
-DEFUN ("mac-set-font-panel-visibility", Fmac_set_font_panel_visibility,
-       Smac_set_font_panel_visibility, 1, 1, 0,
-  doc: /* Make the font panel visible if and only if VISIBLE is non-nil.
+DEFUN ("mac-set-font-panel-visible-p", Fmac_set_font_panel_visible_p,
+       Smac_set_font_panel_visible_p, 1, 1, 0,
+  doc: /* Make the font panel visible if and only if FLAG is non-nil.
 This is for internal use only.  Use `mac-font-panel-mode' instead.  */)
-     (visible)
-     Lisp_Object visible;
+     (flag)
+     Lisp_Object flag;
 {
   OSStatus err = noErr;
 
   check_mac ();
 
   BLOCK_INPUT;
-  if (NILP (visible) != !mac_font_panel_visible_p ())
+  if (NILP (flag) != !mac_font_panel_visible_p ())
     {
       err = mac_show_hide_font_panel ();
-      if (err == noErr && !NILP (visible))
+      if (err == noErr && !NILP (flag))
 	{
 	  Lisp_Object focus_frame = x_get_focus_frame (SELECTED_FRAME ());
 	  struct frame *f = (NILP (focus_frame) ? SELECTED_FRAME ()
@@ -4860,7 +4882,7 @@
 #endif
   defsubr (&Smac_clear_font_name_table);
 #if USE_MAC_FONT_PANEL
-  defsubr (&Smac_set_font_panel_visibility);
+  defsubr (&Smac_set_font_panel_visible_p);
 #endif
 #if USE_ATSUI
   defsubr (&Smac_atsu_font_face_attributes);