------------------------------ misc/tabledrag.js ------------------------------
index 9916821..adf7414 100644
@@ -111,11 +111,11 @@ Drupal.tableDrag.prototype.hideColumns = function(){
     }
 
     // Hide the column containing this field.
-    if (hidden && cell[0] && cell.css('display') != 'none') {
+    if (hidden && cell[0] && !cell.hasClass("hideColumns-processed")) {
       // Add 1 to our indexes. The nth-child selector is 1 based, not 0 based.
       // Match immediate children of the parent element to allow nesting.
       var columnIndex = $('> td', cell.parent()).index(cell.get(0)) + 1;
-      var headerIndex = $('> td:not(:hidden)', cell.parent()).index(cell.get(0)) + 1;
+      var headerIndex = $('td:not(".hideColumns-processed")', cell.parent()).index(cell.get(0)) + 1;
       $('> thead > tr, > tbody > tr, > tr', this.table).each(function(){
         var row = $(this);
         var parentTag = row.parent().get(0).tagName.toLowerCase();
@@ -136,7 +136,7 @@ Drupal.tableDrag.prototype.hideColumns = function(){
           else {
             // Hide table body cells, but remove table header cells entirely
             // (Safari doesn't hide properly).
-            parentTag == 'thead' ? cell.remove() : cell.css('display', 'none');
+            parentTag == 'thead' ? cell.remove() : cell.css('display', 'none').addClass('hideColumns-processed');
           }
         }
       });
