c1344ba327a9e1acaf267653730de9f532087c5e angie Fri Apr 4 12:31:55 2014 -0700 When we have multiple position matches, restore lastPosition(or defaultPosition). fixes #13009 diff --git src/hg/hgVai/hgVai.c src/hg/hgVai/hgVai.c index b181842..ff63bd7 100644 --- src/hg/hgVai/hgVai.c +++ src/hg/hgVai/hgVai.c @@ -145,31 +145,31 @@ { printf("" "%s\n" "\n", label); } void topLabelSpansEnd() { printf(""); } char *makePositionInput() /* Return HTML for the position input. */ { struct dyString *dy = dyStringCreate("", - hgvaRange, 26, + hgvaRange, 45, addCommasToPos(NULL, cartString(cart, hgvaRange))); return dyStringCannibalize(&dy); } void printCtAndHubButtons() /* Print a div with buttons for hgCustom and hgHubConnect */ { puts("
"); hOnClickButton("document.customTrackForm.submit(); return false;", hasCustomTracks(cart) ? CT_MANAGE_BUTTON_LABEL : CT_ADD_BUTTON_LABEL); printf(" "); if (hubConnectTableExists()) hOnClickButton("document.trackHubForm.submit(); return false;", "track hubs"); nbSpaces(3); printf("To reset all user cart settings (including custom tracks), \n" @@ -1956,30 +1956,35 @@ cartSetString(cart, hgvaRange, hDefaultPos(database)); int timeout = cartUsualInt(cart, "udcTimeout", 300); if (udcCacheTimeout() < timeout) udcSetCacheTimeout(timeout); knetUdcInstall(); initGroupsTracksTables(cart, &fullTrackList, &fullGroupList); if (lookupPosition(cart, hgvaRange)) { if (startQuery) doQuery(); else doUi(); } -else if (webGotWarnings()) +else { - // We land here when lookupPosition pops up a warning box. - // Reset the problematic position and show the main page. + // Revert to lastPosition if we have multiple matches or warnings, + // especially in case user manually edits browser location as in #13009: char *position = cartUsualString(cart, "lastPosition", hDefaultPos(database)); cartSetString(cart, hgvaRange, position); + if (webGotWarnings()) + { + // We land here when lookupPosition pops up a warning box. + // Reset the problematic position and show the main page. doMainPage(); } // If lookupPosition returned FALSE and didn't report warnings, // then it wrote HTML showing multiple position matches & links. + } cartCheckout(&cart); cgiExitTime("hgVai", enteredMainTime); return 0; }