emacs-diffs
[Top][All Lists]
Advanced

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

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


From: Miles Bader
Subject: [Emacs-diffs] Changes to emacs/src/mac.c,v
Date: Wed, 23 Apr 2008 05:55:45 +0000

CVSROOT:        /cvsroot/emacs
Module name:    emacs
Changes by:     Miles Bader <miles>     08/04/23 05:55:42

Index: src/mac.c
===================================================================
RCS file: /cvsroot/emacs/emacs/src/mac.c,v
retrieving revision 1.89
retrieving revision 1.90
diff -u -b -r1.89 -r1.90
--- src/mac.c   18 Apr 2008 02:56:43 -0000      1.89
+++ src/mac.c   23 Apr 2008 05:55:34 -0000      1.90
@@ -817,7 +817,7 @@
 }
 
 #if TARGET_API_MAC_CARBON
-static OSErr
+OSErr
 create_apple_event (class, id, result)
      AEEventClass class;
      AEEventID id;
@@ -842,30 +842,33 @@
   return err;
 }
 
-OSStatus
-create_apple_event_from_event_ref (event, num_params, names, types, result)
+Lisp_Object
+mac_event_parameters_to_lisp (event, num_params, names, types)
      EventRef event;
      UInt32 num_params;
      const EventParamName *names;
      const EventParamType *types;
-     AppleEvent *result;
 {
   OSStatus err;
-  UInt32 i, size;
+  Lisp_Object result = Qnil;
+  UInt32 i;
+  ByteCount size;
+#ifdef MAC_OSX
   CFStringRef string;
   CFDataRef data;
+#endif
   char *buf = NULL;
 
-  err = create_apple_event (0, 0, result); /* Dummy class and ID.  */
-  if (err != noErr)
-    return err;
-
   for (i = 0; i < num_params; i++)
-    switch (types[i])
+    {
+      EventParamName name = names[i];
+      EventParamType type = types[i];
+
+      switch (type)
       {
 #ifdef MAC_OSX
       case typeCFStringRef:
-       err = GetEventParameter (event, names[i], typeCFStringRef, NULL,
+         err = GetEventParameter (event, name, typeCFStringRef, NULL,
                                 sizeof (CFStringRef), NULL, &string);
        if (err != noErr)
          break;
@@ -874,97 +877,41 @@
                                                     '?');
        if (data == NULL)
          break;
-       AEPutParamPtr (result, names[i], typeUTF8Text,
-                      CFDataGetBytePtr (data), CFDataGetLength (data));
+         name = EndianU32_NtoB (name);
+         type = EndianU32_NtoB (typeUTF8Text);
+         result =
+           Fcons (Fcons (make_unibyte_string ((char *) &name, 4),
+                         Fcons (make_unibyte_string ((char *) &type, 4),
+                                make_unibyte_string (CFDataGetBytePtr (data),
+                                                     CFDataGetLength (data)))),
+                  result);
        CFRelease (data);
        break;
 #endif
 
       default:
-       err = GetEventParameter (event, names[i], types[i], NULL,
-                                0, &size, NULL);
+         err = GetEventParameter (event, name, type, NULL, 0, &size, NULL);
        if (err != noErr)
          break;
        buf = xrealloc (buf, size);
-       err = GetEventParameter (event, names[i], types[i], NULL,
-                                size, NULL, buf);
-       if (err == noErr)
-         AEPutParamPtr (result, names[i], types[i], buf, size);
-       break;
-      }
-  if (buf)
-    xfree (buf);
-
-  return noErr;
-}
-
-OSErr
-create_apple_event_from_drag_ref (drag, num_types, types, result)
-     DragRef drag;
-     UInt32 num_types;
-     const FlavorType *types;
-     AppleEvent *result;
-{
-  OSErr err;
-  UInt16 num_items;
-  AppleEvent items;
-  long index;
-  char *buf = NULL;
-
-  err = CountDragItems (drag, &num_items);
-  if (err != noErr)
-    return err;
-  err = AECreateList (NULL, 0, false, &items);
-  if (err != noErr)
-    return err;
-
-  for (index = 1; index <= num_items; index++)
-    {
-      ItemReference item;
-      DescType desc_type = typeNull;
-      Size size;
-
-      err = GetDragItemReferenceNumber (drag, index, &item);
-      if (err == noErr)
-       {
-         int i;
-
-         for (i = 0; i < num_types; i++)
-           {
-             err = GetFlavorDataSize (drag, item, types[i], &size);
+         err = GetEventParameter (event, name, type, NULL, size, NULL, buf);
              if (err == noErr)
                {
-                 buf = xrealloc (buf, size);
-                 err = GetFlavorData (drag, item, types[i], buf, &size, 0);
+             name = EndianU32_NtoB (name);
+             type = EndianU32_NtoB (type);
+             result =
+               Fcons (Fcons (make_unibyte_string ((char *) &name, 4),
+                             Fcons (make_unibyte_string ((char *) &type, 4),
+                                    make_unibyte_string (buf, size))),
+                      result);
                }
-             if (err == noErr)
-               {
-                 desc_type = types[i];
                  break;
                }
            }
-       }
-      err = AEPutPtr (&items, index, desc_type,
-                     desc_type != typeNull ? buf : NULL,
-                     desc_type != typeNull ? size : 0);
-      if (err != noErr)
-       break;
-    }
   if (buf)
     xfree (buf);
 
-  if (err == noErr)
-    {
-      err = create_apple_event (0, 0, result); /* Dummy class and ID.  */
-      if (err == noErr)
-       err = AEPutParamDesc (result, keyDirectObject, &items);
-      if (err != noErr)
-       AEDisposeDesc (result);
-    }
-
-  AEDisposeDesc (&items);
-
-  return err;
+  return result;
 }
 #endif /* TARGET_API_MAC_CARBON */
 




reply via email to

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