c4f955645d376e77f358e545b36fbdefdc8ab8ce
markd
  Thu Mar 22 18:19:49 2018 -0700
make sure gencode label is set on first switch from old cart (rm21157)

diff --git src/hg/hgTracks/gencodeTracks.c src/hg/hgTracks/gencodeTracks.c
index 78e820e..6a447ff 100644
--- src/hg/hgTracks/gencodeTracks.c
+++ src/hg/hgTracks/gencodeTracks.c
@@ -452,60 +452,68 @@
 safef(varSuffix, sizeof(varSuffix), "label.%s", labelName);
 char *value = cartUsualStringClosestToHome(cart, tg->tdb, FALSE, varSuffix, NULL);
 if (value != NULL)
     *anyExistsP = TRUE;
 return ((value != NULL) && !sameString(value, "0"));
 }
 
 static void setLabelCartVar(struct track *tg, char *labelName, boolean value)
 /* set one of the label type cart variables. */
 {
 char varName[256];
 safef(varName, sizeof(varName), "%s.label.%s", tg->track, labelName);
 cartSetBoolean(cart, varName, value);
 }
 
-static void setFromOldLabelsVarsInCart(struct track *tg)
+static unsigned setFromOldLabelsVarsInCart(struct track *tg)
 /* If the old gencode label variable are set for this track, migrate to the new
  * variable.  This prevents labels from disappearing with the new old and an old cart.
  */
 {
 // logic from simpleTracks.c:genePredAssignConfiguredName()
+unsigned enabledLabels = 0;
 char *geneLabel = cartUsualStringClosestToHome(cart, tg->tdb, FALSE, "label", "gene");
 if (sameString(geneLabel, "gene") || sameString(geneLabel, "name") || sameString(geneLabel, "both"))
+    {
     setLabelCartVar(tg, "geneName", TRUE);
+    enabledLabels |= ITEM_LABEL_GENE_NAME;
+    }
 if (sameString(geneLabel, "accession") || sameString(geneLabel, "both"))
+    {
     setLabelCartVar(tg, "transcriptId", TRUE);
+    enabledLabels |= ITEM_LABEL_TRANSCRIPT_ID;
+    }
 cartRemoveVariableClosestToHome(cart, tg->tdb, FALSE, "label");
+return enabledLabels;
 }
 
 static unsigned getEnabledLabels(struct track *tg)
 /* Look up each of the label type names in the cart to see if they are enabled,
  * Return bit set */
 {
 unsigned enabledLabels = 0;
 boolean anyExists = FALSE;
 int i;
 for (i = 0; itemLabelCartVarNamesMap[i].name != NULL; i++)
     {
     if (getLabelCartVar(tg, itemLabelCartVarNamesMap[i].name, &anyExists))
         enabledLabels |= itemLabelCartVarNamesMap[i].flag;
     }
 
 // if it looks like new track settings have never been configured, set from old.
 if ((enabledLabels == 0) && !anyExists)
-    setFromOldLabelsVarsInCart(tg);
+    enabledLabels = setFromOldLabelsVarsInCart(tg);
 return enabledLabels;
 }
 
 static void concatItemName(char *name, int nameSize, char *value)
 /* add a name to the name buffer */
 {
 if (strlen(name) > 0)
     safecat(name, nameSize, "/");
 safecat(name, nameSize, value);
 }
 
 static char* getTranscriptLabel(unsigned enabledLabels, struct genePred *gp,
                                 struct wgEncodeGencodeAttrs *attrs)
 /* one type of label for a item in track */
 {