3c3a220811cc755ee2f8e18d3188674729efd110
angie
  Wed Nov 25 16:51:40 2015 -0800
hgCustom was removing its hgct_navDest var from the cart because it removes
every "hgct_" cart var when it's done!  Tweak the prefix to make navDest
persist in the cart.

diff --git src/hg/hgCustom/hgCustom.c src/hg/hgCustom/hgCustom.c
index 0de51df..40c9953 100644
--- src/hg/hgCustom/hgCustom.c
+++ src/hg/hgCustom/hgCustom.c
@@ -34,46 +34,47 @@
   "hgCustom - Custom track management CGI\n"
   "usage:\n"
   "   hgCustom <CGI settings>\n"
   );
 }
 
 /* DON'T EDIT THIS -- use CGI param "&measureTiming=." */
 static boolean measureTiming = FALSE;
 
 #define TEXT_ENTRY_ROWS 7
 #define TEXT_ENTRY_COLS 73
 #define CONFIG_ENTRY_ROWS 3
 #define SAVED_LINE_COUNT  50
 
 /* CGI variables */
-#define hgCt		 "hgct_"  /* prefix for all control variables */
-
+#define hgCt		 "hgct_"  /* prefix for all control variables; these are removed at end! */
+#define hgCtNoRemove	 "hgctNoRemove_"
 /* these are shared with other modules */
 #define hgCtDataText      CT_CUSTOM_TEXT_ALT_VAR
 #define hgCtDataFile      CT_CUSTOM_FILE_VAR
 #define hgCtDataFileName  CT_CUSTOM_FILE_NAME_VAR
 #define hgCtDocText       CT_CUSTOM_DOC_TEXT_VAR
 #define hgCtDocFile       CT_CUSTOM_DOC_FILE_VAR
 #define hgCtTable         CT_SELECTED_TABLE_VAR
 #define hgCtUpdatedTable  CT_UPDATED_TABLE_VAR
 
 /* misc */
 #define hgCtUpdatedTrack "hgct_updatedTrack"
 #define hgCtDeletePrefix "hgct_del"
 #define hgCtRefreshPrefix "hgct_refresh"
 #define hgCtConfigLines   "hgct_configLines"
+#define hgCtNavDest 	 hgCtNoRemove "navDest"
 
 /* commands */
 #define hgCtDo		  hgCt   "do_"	  /* prefix for all commands */
 #define hgCtDoAdd	  hgCtDo "add"
 #define hgCtDoDelete	  hgCtDo "delete"
 #define hgCtDoDeleteSet	  hgCtDo "delete_set"
 #define hgCtDoDeleteClr	  hgCtDo "delete_clr"
 #define hgCtDoRefresh     hgCtDo "refresh"
 #define hgCtDoRefreshSet  hgCtDo "refresh_set"
 #define hgCtDoRefreshClr  hgCtDo "refresh_clr"
 #define hgCtDoGenomeBrowser	  hgCtDo "gb"
 #define hgCtDoTableBrowser	  hgCtDo "tb"
 #ifdef PROGRESS_METER
 #define hgCtDoProgress	  hgCtDo "progress"
 #endif
@@ -644,31 +645,30 @@
 /* Return {value, label} pairs with other CGIs the user might wish to jump to. */
 {
 struct slPair *valsAndLabels = slPairNew(hgTracksName(), "Genome Browser");
 slAddHead(&valsAndLabels, slPairNew(hgTablesName(), "Table Browser"));
 slAddHead(&valsAndLabels, slPairNew(hgVaiName(), "Variant Annotation Integrator"));
 slAddHead(&valsAndLabels, slPairNew(hgIntegratorName(), "Data Integrator"));
 slReverse(&valsAndLabels);
 return valsAndLabels;
 }
 
 static void makeOtherCgiForm(char *pos)
 /* Make a form for navigating to other CGIs. */
 {
 struct slPair *valsAndLabels = makeOtherCgiValsAndLabels();
 // Default to the first CGI in the menu.
-#define hgCtNavDest "hgct_navDest"
 char *defaultCgi = valsAndLabels->name;
 char *selected = cartUsualString(cart, hgCtNavDest, defaultCgi);
 printf("<FORM STYLE=\"margin-bottom:0;\" METHOD=\"GET\" NAME=\"navForm\" ID=\"navForm\""
        " ACTION=\"%s\">\n", selected);
 cartSaveSession(cart);
 if (pos)
     cgiMakeHiddenVar("position", pos);
 printf("view in ");
 // Construct a menu of destination CGIs
 char *extraHtml = "id=\"navSelect\" "
     "onChange=\"var newVal = $('#navSelect').val(); $('#navForm').attr('action', newVal);\"";
 puts(cgiMakeSingleSelectDropList(hgCtNavDest, valsAndLabels, selected, NULL, NULL, extraHtml));
 cgiMakeButton("submit", "go");
 puts("</FORM>");
 }