Index: uc_cart/uc_cart.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/ubercart/uc_cart/uc_cart.module,v
retrieving revision 1.15.2.37
diff -u -p -r1.15.2.37 uc_cart.module
--- uc_cart/uc_cart.module	28 Sep 2010 20:10:56 -0000	1.15.2.37
+++ uc_cart/uc_cart.module	5 Oct 2010 18:51:04 -0000
@@ -946,6 +946,13 @@ function uc_cart_view_form($form_state, 
       $description = $display_item['title']['#value'] . $display_item['description']['#value'];
       $form['items'][$i]['desc']['#value'] = $description;
 
+      $form['items'][$i]['remove'] = array(
+        '#type' => 'submit',
+        '#value' => t('Remove'),
+        '#remove' => $i,
+        '#submit' => array('uc_cart_view_form_submit'),
+      );
+
       $form['items'][$i]['title']['#type'] = 'value';
       $form['items'][$i]['description']['#type'] = 'value';
 
@@ -1015,6 +1022,12 @@ function uc_cart_view_form_submit($form,
     unset($_SESSION['cart_order']);
   }
 
+  // If a remove button was clicked, set the quantity for that item to 0.
+  if (isset($form_state['clicked_button']['#remove'])) {
+    $item = $form_state['clicked_button']['#remove'];
+    $form_state['values']['items'][$item]['qty'] = 0;
+  }
+
   // Update the items in the shopping cart based on the form values.
   uc_cart_update_item_object((object)$form_state['values']);
 
@@ -1597,12 +1610,7 @@ function uc_cart_remove_item($nid, $cid 
 function uc_cart_update_item_object($cart) {
   if (is_object($cart)) {
     foreach ($cart->items as $item) {
-      if ($item['remove']) {
-        module_invoke($item['module'], 'update_cart_item', $item['nid'], unserialize($item['data']), 0);
-      }
-      else {
-        module_invoke($item['module'], 'update_cart_item', $item['nid'], unserialize($item['data']), $item['qty']);
-      }
+      module_invoke($item['module'], 'update_cart_item', $item['nid'], unserialize($item['data']), $item['qty']);
     }
 
     // Rebuild the cached cart items.
Index: uc_product/uc_product.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/ubercart/uc_product/uc_product.module,v
retrieving revision 1.14.2.44
diff -u -p -r1.14.2.44 uc_product.module
--- uc_product/uc_product.module	28 Sep 2010 20:08:54 -0000	1.14.2.44
+++ uc_product/uc_product.module	5 Oct 2010 18:51:06 -0000
@@ -1180,7 +1180,6 @@ function uc_product_cart_display($item) 
   $element = array();
   $element['nid'] = array('#type' => 'value', '#value' => $node->nid);
   $element['module'] = array('#type' => 'value', '#value' => 'uc_product');
-  $element['remove'] = array('#type' => 'checkbox');
 
   $element['title'] = array(
     '#value' => node_access('view', $node) ? l($item->title, 'node/'. $node->nid) : check_plain($item->title),
