Index: filefield.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/filefield/filefield.module,v
retrieving revision 1.164
diff -u -r1.164 filefield.module
--- filefield.module	6 Feb 2009 10:56:30 -0000	1.164
+++ filefield.module	28 Feb 2009 22:26:46 -0000
@@ -504,16 +504,34 @@
   $field_form[$delta]['#prefix'] = '<div class="ahah-new-content">';
   $field_form[$delta]['#suffix'] = '</div>';
 
-  $output = theme('status_messages') . drupal_render($field_form[$delta]);
+  $output = drupal_render($field_form[$delta]);
 
   // AHAH is not being nice to us and doesn't know the "other" button (that is,
   // either "Upload" or "Delete") yet. Which in turn causes it not to attach
   // AHAH behaviours after replacing the element. So we need to tell it first.
+
+  // Loop through the JS settings and find the settings needed for our buttons.
   $javascript = drupal_add_js(NULL, NULL);
+  $filefield_ahah_settings = array();
   if (isset($javascript['setting'])) {
-    $output .= '<script type="text/javascript">jQuery.extend(Drupal.settings, '. drupal_to_js(call_user_func_array('array_merge_recursive', $javascript['setting'])) .');</script>';
+    foreach ($javascript['setting'] as $settings) {
+      if (isset($settings['ahah'])) {
+        foreach ($settings['ahah'] as $id => $ahah_settings) {
+          if (strpos($id, 'filefield-upload') || strpos($id, 'filefield-remove')) {
+            $filefield_ahah_settings[$id] = $ahah_settings;
+          }
+        }
+      }
+    }
   }
 
+  // Add the AHAH settings needed for our new buttons.
+  if (!empty($filefield_ahah_settings)) {
+    $output .= '<script type="text/javascript">jQuery.extend(Drupal.settings.ahah, '. drupal_to_js($filefield_ahah_settings) .');</script>';
+  }
+
+  $output = theme('status_messages') . $output;
+
   // For some reason, file uploads don't like drupal_json() with its manual
   // setting of the text/javascript HTTP header. So use this one instead.
   $GLOBALS['devel_shutdown'] = false;
Index: filefield_widget.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/filefield/filefield_widget.inc,v
retrieving revision 1.53
diff -u -r1.53 filefield_widget.inc
--- filefield_widget.inc	27 Feb 2009 18:20:56 -0000	1.53
+++ filefield_widget.inc	28 Feb 2009 22:26:46 -0000
@@ -187,7 +187,7 @@
   $field = content_fields($element['#field_name'], $element['#type_name']);
 
   // check remove buttons...
-  $remove_name = $element['#field_name'] .'_'. $element['#delta'] .'_remove_btn';
+  $remove_name = $element['#field_name'] .'_'. $element['#delta'] .'_filefield_remove';
   if (isset($form_state['clicked_button']) && $form_state['clicked_button']['#name'] == $remove_name) {
     $item = array('fid' => 0, 'list' => $field['list_default'], 'data' => array('description' => ''));
   }
@@ -253,7 +253,7 @@
   $element['#attributes']['class'] = (isset($element['#attributes']['class']) ? $element['#attributes']['class'] : '') .' filefield-ahah-wrapper';
   $element['#prefix'] = '<div '. drupal_attributes($element['#attributes']) .'>';
   $element['#suffix'] = '</div>';
-  $element['upload_btn'] = array(
+  $element['filefield_upload'] = array(
     '#type' => 'submit',
     '#value' => t('Upload'),
     '#process' => array('form_expand_ahah'),
@@ -270,11 +270,11 @@
     '#upload_validators' => $element['#upload_validators'],
   );
   if ($item['fid'] != 0) {
-    $element['remove_btn'] = array(
-      '#name' => $element['#field_name'] .'_'. $element['#delta'] .'_remove_btn',
+    $element['filefield_remove'] = array(
+      '#name' => $element['#field_name'] .'_'. $element['#delta'] .'_filefield_remove',
       '#type' => 'submit',
       '#value' => t('Remove'),
-      '#process' => array('filefield_widget_process_remove_btn', 'form_expand_ahah'),
+      '#process' => array('form_expand_ahah'),
       '#submit' => array('node_form_submit_build_node'),
       '#ahah' => array( // with JavaScript
         'path' => 'filefield/ahah/'.   $element['#type_name'] .'/'. $element['#field_name'] .'/'. $element['#delta'],
