da2e00021362a366f2f3b17b238305ca7981c7d2
tdreszer
  Thu Dec 15 12:44:34 2011 -0800
Some older composites have packable children which are seen in rightClick as unpackable.  The mixed case that gives rise to this should not be allowed now, but we can support it for those older composites.  The rule is, if any single subtrack is packable, then the whole tree is.
diff --git src/hg/hgTracks/imageV2.c src/hg/hgTracks/imageV2.c
index 7aa19ab..ddeb367 100644
--- src/hg/hgTracks/imageV2.c
+++ src/hg/hgTracks/imageV2.c
@@ -220,31 +220,31 @@
 enum kindOfParent kindOfParent = tdbKindOfParent(track->tdb);
 enum kindOfChild  kindOfChild  = tdbKindOfChild(track->tdb);
 jsonHashAddNumber(ele, "kindOfParent", kindOfParent);
 jsonHashAddNumber(ele, "kindOfChild", kindOfChild);
 
 // Tell something about the parent and/or children
 if (kindOfChild != kocOrphan)
     {
     struct trackDb *parentTdb = (kindOfChild == kocFolderContent ? track->tdb->parent :tdbGetContainer(track->tdb));
 
     jsonHashAddString(ele, "parentTrack", parentTdb->track);
     jsonHashAddString(ele, "parentLabel", parentTdb->shortLabel);
     if (kindOfChild != kocFolderContent && !track->canPack)
         {
         jsonHashAddNumber(ele, "shouldPack", 0); // default vis is full, but pack is an option
-        track->canPack = parentTdb->canPack;
+        track->canPack = rTdbTreeCanPack(parentTdb);
         }
     }
 
 // XXXX really s/d be numChildren
 jsonHashAddNumber(ele, "hasChildren", slCount(track->tdb->subtracks));
 
 // Configuring?
 int cfgByPopup = configurableByAjax(track->tdb,0);
 if (!configurable
 ||  track->hasUi == FALSE
 ||  cfgByPopup == cfgNone)
     jsonHashAddString(ele, "configureBy", "none");
 else if (cfgByPopup < 0)  // denied via ajax, but allowed via full normal hgTrackUi page
     jsonHashAddString(ele, "configureBy", "clickThrough");
 else