emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] Changes to emacs/src/macmenu.c,v


From: YAMAMOTO Mitsuharu
Subject: [Emacs-diffs] Changes to emacs/src/macmenu.c,v
Date: Sun, 14 Jan 2007 07:57:44 +0000

CVSROOT:        /cvsroot/emacs
Module name:    emacs
Changes by:     YAMAMOTO Mitsuharu <mituharu>   07/01/14 07:57:43

Index: macmenu.c
===================================================================
RCS file: /cvsroot/emacs/emacs/src/macmenu.c,v
retrieving revision 1.51
retrieving revision 1.52
diff -u -b -r1.51 -r1.52
--- macmenu.c   12 Jan 2007 09:00:16 -0000      1.51
+++ macmenu.c   14 Jan 2007 07:57:43 -0000      1.52
@@ -2447,7 +2447,7 @@
   short buttons_height, text_height, inner_width, inner_height;
   Rect empty_rect, *rects;
   WindowRef window = NULL;
-  ControlRef *buttons, text;
+  ControlRef *buttons, default_button = NULL, text;
 
   dialog_name = first_wv->name;
   nb_buttons = dialog_name[1] - '0';
@@ -2490,6 +2490,13 @@
            }
          if (err == noErr)
            {
+             if (!wv->enabled)
+               err = DisableControl (buttons[i]);
+             else if (default_button == NULL)
+               default_button = buttons[i];
+           }
+         if (err == noErr)
+           {
              SInt16 unused;
 
              rects[i] = empty_rect;
@@ -2617,30 +2624,48 @@
   /* Create the application icon at the upper-left corner.  */
   if (err == noErr)
     {
-      ControlButtonContentInfo button_info;
-      IconRef icon_ref;
+      ControlButtonContentInfo content;
       ControlRef icon;
+      static const ProcessSerialNumber psn = {0, kCurrentProcess};
+#ifdef MAC_OSX
+      FSRef app_location;
+#else
+      ProcessInfoRec pinfo;
+      FSSpec app_spec;
+#endif
+      SInt16 unused;
 
-      button_info.contentType = kControlContentIconRef;
-      err = GetIconRef (kOnAppropriateDisk, MAC_EMACS_CREATOR_CODE,
-                       kGenericApplicationIcon, &icon_ref);
+      content.contentType = kControlContentIconRef;
+#ifdef MAC_OSX
+      err = GetProcessBundleLocation (&psn, &app_location);
+      if (err == noErr)
+       err = GetIconRefFromFileInfo (&app_location, 0, NULL, 0, NULL,
+                                     kIconServicesNormalUsageFlag,
+                                     &content.u.iconRef, &unused);
+#else
+      bzero (&pinfo, sizeof (ProcessInfoRec));
+      pinfo.processInfoLength = sizeof (ProcessInfoRec);
+      pinfo.processAppSpec = &app_spec;
+      err = GetProcessInformation (&psn, &pinfo);
+      if (err == noErr)
+       err = GetIconRefFromFile (&app_spec, &content.u.iconRef, &unused);
+#endif
       if (err == noErr)
        {
          Rect bounds;
 
-         button_info.u.iconRef = icon_ref;
          SetRect (&bounds, DIALOG_ICON_LEFT_MARGIN, DIALOG_ICON_TOP_MARGIN,
                   DIALOG_ICON_LEFT_MARGIN + DIALOG_ICON_WIDTH,
                   DIALOG_ICON_TOP_MARGIN + DIALOG_ICON_HEIGHT);
-         err = CreateIconControl (window, &bounds, &button_info,
-                                  true, &icon);
-         ReleaseIconRef (icon_ref);
+         err = CreateIconControl (window, &bounds, &content, true, &icon);
+         ReleaseIconRef (content.u.iconRef);
        }
     }
 
   /* Show the dialog window and run event loop.  */
   if (err == noErr)
-    err = SetWindowDefaultButton (window, buttons[0]);
+    if (default_button)
+      err = SetWindowDefaultButton (window, default_button);
   if (err == noErr)
     err = install_dialog_event_handler (window);
   if (err == noErr)




reply via email to

[Prev in Thread] Current Thread [Next in Thread]