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/inc/trackDb.h src/hg/inc/trackDb.h
index 4034234..0eb0cdd 100644
--- src/hg/inc/trackDb.h
+++ src/hg/inc/trackDb.h
@@ -572,30 +572,33 @@
 struct _membersForAll *tdbExtrasMembersForAll(struct trackDb *tdb);
 // Returns composite view/dimension members for all, else NULL.
 
 void tdbExtrasMembersForAllSet(struct trackDb *tdb, struct _membersForAll *membersForAll);
 // Sets the composite view/dimensions members for all for later retrieval.
 
 struct _membership *tdbExtrasMembership(struct trackDb *tdb);
 // Returns subtrack membership if already known, else NULL
 
 void tdbExtrasMembershipSet(struct trackDb *tdb,struct _membership *membership);
 // Sets the subtrack membership for later retrieval.
 
 char *tdbBigFileName(struct sqlConnection *conn, struct trackDb *tdb);
 // Return file name associated with bigWig.  Do a freeMem on returned string when done.
 
+boolean rTdbTreeCanPack(struct trackDb *tdb);
+// Trees can pack as all or none, since they can share vis.
+
 void tdbSetCartVisibility(struct trackDb *tdb, struct cart *cart, char *vis);
 // Set visibility in the cart. Handles all the complications necessary for subtracks.
 
 // More INLINES which depend on what the definition of "is" is
 INLINE boolean tdbIsBigBed(struct trackDb *tdb)
 // Local test to see if something is big bed.  Handles hub tracks unlike hIsBigBed.
 {
 return startsWithWord("bigBed", tdb->type);
 }
 
 INLINE boolean tdbIsBigWig(struct trackDb *tdb)
 // Local test to see if something is big bed.  Handles hub tracks unlike hIsBigBed.
 {
 return startsWithWord("bigWig", tdb->type);
 }