### Eclipse Workspace Patch 1.0
#P Drupal
Index: modules/file/file.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/file/file.module,v
retrieving revision 1.28
diff -u -r1.28 file.module
--- modules/file/file.module	9 May 2010 19:34:26 -0000	1.28
+++ modules/file/file.module	4 Jun 2010 08:38:54 -0000
@@ -368,6 +368,7 @@
     '#limit_validation_errors' => array($element['#parents']),
     '#ajax' => $ajax_settings,
     '#weight' => -5,
+    '#disabled' => (isset($element['#disabled']) && $element['#disabled']),
   );
 
   $ajax_settings['progress']['type'] ? $ajax_settings['progress']['type'] == 'bar' : 'throbber';
@@ -382,6 +383,7 @@
     '#limit_validation_errors' => array($element['#parents']),
     '#ajax' => $ajax_settings,
     '#weight' => -5,
+    '#disabled' => (isset($element['#disabled']) && $element['#disabled']),
   );
 
   // @todo It is not good to call these private functions. This should be
@@ -439,6 +441,7 @@
     '#access' => empty($fid),
     '#theme_wrappers' => array(),
     '#weight' => -10,
+    '#disabled' => (isset($element['#disabled']) && $element['#disabled']),
   );
 
   if ($fid && $element['#file']) {
Index: modules/file/file.js
===================================================================
RCS file: /cvs/drupal/drupal/modules/file/file.js,v
retrieving revision 1.3
diff -u -r1.3 file.js
--- modules/file/file.js	1 May 2010 21:55:13 -0000	1.3
+++ modules/file/file.js	4 Jun 2010 08:38:53 -0000
@@ -92,7 +92,11 @@
       $enabledFields = $(this).parents('div.form-managed-file').find('input.form-file');
     }
 
-    var $disabledFields = $('div.form-managed-file input.form-file').not($enabledFields);
+    var $disabledFields = $('div.form-managed-file input.form-file').not($enabledFields).each(function() {
+      if ($(this).is(':disabled')) {
+        $(this).addClass('disabled');
+      }
+    });
 
     // Disable upload fields other than the one we're currently working with.
     $disabledFields.attr('disabled', 'disabled');
@@ -102,7 +106,8 @@
     // re-enables the file fields after other processing is complete even though
     // it is only a 1 second timeout.
     setTimeout(function (){
-      $disabledFields.attr('disabled', '');
+      $disabledFields.filter(':not(.disabled)').attr('disabled', '')
+      .end().filter('.disabled').removeClass('disabled');
     }, 1000);
   },
   /**
