diff -urp drupal_old/modules/commerce/modules/product/commerce_product_ui.module drupal_new/modules/commerce/modules/product/commerce_product_ui.module
--- drupal_old/modules/commerce/modules/product/commerce_product_ui.module	2011-04-06 22:43:40.000000000 +0200
+++ drupal_new/modules/commerce/modules/product/commerce_product_ui.module	2011-04-16 11:13:33.000000000 +0200
@@ -556,3 +556,24 @@ function commerce_product_ui_set_breadcr
 
   drupal_set_breadcrumb($breadcrumb);
 }
+
+/**
+ * Implements hook_menu_contextual_links_alter
+ *
+ * With this hook we alter the context menu for product operations in the
+ * product listing in the admin interface.
+ */
+function commerce_product_ui_menu_contextual_links_alter(&$links, $router_item, $root_path) {
+  if(is_array($links) && $root_path == 'admin/commerce/products/%') {
+    $destination = drupal_get_destination();
+    foreach($links as $id => $link) {
+      if(!isset($links[$id]['query'])) {
+        $links[$id]['query'] = array();
+      }
+      $links[$id]['query']['destination'] = $destination['destination'];
+    }
+  }
+}
+
+
+
diff -urp drupal_old/modules/commerce/modules/product/includes/commerce_product.forms.inc drupal_new/modules/commerce/modules/product/includes/commerce_product.forms.inc
--- drupal_old/modules/commerce/modules/product/includes/commerce_product.forms.inc	2011-04-06 22:43:40.000000000 +0200
+++ drupal_new/modules/commerce/modules/product/includes/commerce_product.forms.inc	2011-04-16 11:43:20.459870845 +0200
@@ -68,7 +68,15 @@ function commerce_product_product_form($
   if (!empty($form['#submit'])) {
     $submit += $form['#submit'];
   }
-
+  
+  if(isset($_GET['destination'])) {
+    $form['actions']['submit_and_edit'] = array(
+      '#type' => 'submit',
+      '#value' => t('Save product & continue edit'),
+      '#submit' => $submit + array('commerce_product_product_form_submit_and_edit'),
+    );
+  }
+   
   $form['actions']['submit'] = array(
     '#type' => 'submit',
     '#value' => t('Save product'),
@@ -111,6 +119,19 @@ function commerce_product_product_form_v
 }
 
 /**
+ * Submit wrapper callback for commerce_product_product_form()
+ *
+ * When this callback is invoked, the destination is reset.
+ */
+function commerce_product_product_form_submit_and_edit($form, &$form_state) {
+  
+  // Unset the destination to prevent the redirection to the product listing
+  unset($_GET['destination']);
+
+  commerce_product_product_form_submit($form, $form_state);
+}
+
+/**
  * Submit callback for commerce_product_product_form().
  */
 function commerce_product_product_form_submit($form, &$form_state) {
