22f809907e0828309f9d807bab3ba197b2a5f519
angie
  Tue May 29 10:59:36 2012 -0700
Bug #8048: Fix suggested by Tim: add a class to ldUi's inversion checkboxes,and detect that class when marking changes in subCfg.js.  Also found an slSort
that was missing & for its first arg, resulting in weird sorting of subtracks
for inversion checkbox display.

diff --git src/hg/hgTrackUi/hgTrackUi.c src/hg/hgTrackUi/hgTrackUi.c
index 3f4ac2d..5b7f7aa 100644
--- src/hg/hgTrackUi/hgTrackUi.c
+++ src/hg/hgTrackUi/hgTrackUi.c
@@ -621,39 +621,40 @@
 cgiMakeRadioButton(var, "dprime",   sameString("dprime",   val));
 printf(" D'  ");
 cgiMakeRadioButton(var, "lod",      sameString("lod",      val));
 printf("&nbsp;LOD<BR>");
 
 printf("<BR><B>Track Geometry:</B><BR>&nbsp;&nbsp;\n");
 
 safef(var, sizeof(var), "%s_trm", tdb->track);
 cgiMakeCheckBox(var, cartUsualBoolean(cart, var, ldTrmDefault));
 printf("&nbsp;Trim to triangle<BR>\n");
 
 if (tdbIsComposite(tdb))
     {
     printf("<BR>&nbsp;&nbsp;&nbsp;");
     struct slRef *tdbRefList = trackDbListGetRefsToDescendantLeaves(tdb->subtracks);
-    slSort(tdbRefList, trackDbRefCmp);
+    slSort(&tdbRefList, trackDbRefCmp);
     struct slRef *tdbRef;
     for (tdbRef = tdbRefList; tdbRef != NULL; tdbRef = tdbRef->next)
 	{
 	struct trackDb *subTdb = tdbRef->val;
 	if (hTableExists(database, subTdb->table))
 	    {
 	    safef(var, sizeof(var), "%s_inv", subTdb->track);
-	    cgiMakeCheckBox(var, cartUsualBoolean(cart, var, ldInvDefault));
+	    cgiMakeCheckBoxJS(var, cartUsualBoolean(cart, var, ldInvDefault),
+			      "class='subtrackInCompositeUi'");
 	    printf("&nbsp;Invert display for %s<BR>&nbsp;&nbsp;\n",
 		   subTdb->longLabel);
 	    }
 	}
     slFreeList(&tdbRefList);
     }
 else
     {
     safef(var, sizeof(var), "%s_inv", tdb->track);
     printf("&nbsp;&nbsp;&nbsp;");
     cgiMakeCheckBox(var, cartUsualBoolean(cart, var, ldInvDefault));
     printf("&nbsp;Invert the display<BR>&nbsp;&nbsp;\n");
     }
 printf("<BR><B>Colors:</B>\n");