da3fd831f0d3832aa20c8080e4afe05cca58f85b
tdreszer
  Mon Dec 13 14:06:17 2010 -0800
Emergency fix to composite reshaping code.  Checked it with code commented out to illustrate the exact change.
diff --git src/hg/lib/cart.c src/hg/lib/cart.c
index 64f5a20..7e60d75 100644
--- src/hg/lib/cart.c
+++ src/hg/lib/cart.c
@@ -2106,49 +2106,49 @@
         {
         cartSetString(cart,setting,hStringFromTv(visMax));    // Set this explicitly.  The visOrig may be inherited!
         countVisChanged++;
         if (visOrig == tvHide && tdbIsSuperTrackChild(parent))
             cartTdbOverrideSuperTracks(cart,parent,FALSE);      // deal with superTrack vis! cleanup
         }
 
     // Now set all subtracks that inherit vis back to visOrig
     for(subtrack = parent->subtracks;subtrack != NULL;subtrack = subtrack->next)
         {
         int fourState = subtrackFourStateChecked(subtrack,cart);
         if (!fourStateChecked(fourState))
             cartRemove(cart,subtrack->track);  // Remove subtrack level vis if it isn't even checked just in case
         else  // subtrack is checked (should include subtrack level vis)
             {
-            if (!hashFindVal(subVisHash, subtrack->track))   // if the subtrack doesn't have individual vis AND...
+            if (tdbIsMultiTrack(parent))
+                cartRemove(cart,subtrack->track);  // MultiTrack vis is ALWAYS inherited vis and non-selected should not have vis
+            else // NO LONGER EXCLUDE THOSE WITH INDIVIDUAL VIS//if (!hashFindVal(subVisHash, subtrack->track))   // if the subtrack doesn't have individual vis AND...
                 {
                 if (reshapeFully || visOrig == tvHide)
                     {
                     subtrackFourStateCheckedSet(subtrack, cart,FALSE,fourStateEnabled(fourState)); // uncheck
                     cartRemove(cart,subtrack->track);  // Remove it if it exists, just in case
                     countUnchecked++;
                     }
                 else if (visOrig != tvHide)
                     {
-                    if (tdbIsMultiTrack(parent))
-                        cartRemove(cart,subtrack->track);  // MultiTrack vis is ALWAYS inherited
-                    else
+                    //if (tdbIsMultiTrack(parent))
+                    //    cartRemove(cart,subtrack->track);  // MultiTrack vis is ALWAYS inherited
+                    //else
                         cartSetString(cart,subtrack->track,hStringFromTv(visOrig));
                     countVisChanged++;
                     }
                 }
-            else if (tdbIsMultiTrack(parent))
-                cartRemove(cart,subtrack->track);  // MultiTrack vis is ALWAYS inherited vis and non-selected should not have vis
             }
         }
     }
 else if (tdbIsMultiTrack(parent))
     {
     // MultiTrack vis is ALWAYS inherited vis so remove any subtrack specific vis
     struct hashCookie brownie = hashFirst(subVisHash);
     struct hashEl* cartVar = NULL;
     while ((cartVar = hashNext(&brownie)) != NULL)
         {
         if (!endsWith(cartVar->name,"_sel"))
             cartRemove(cart,cartVar->name);
         }
     }
 if (countUnchecked + countVisChanged)