33d86ed28182f6dc7903ac522f4d94bf9906274d max Wed Apr 29 01:44:21 2026 -0700 add submit button to superTrack filters, refs #36258 diff --git src/hg/hgTrackUi/hgTrackUi.c src/hg/hgTrackUi/hgTrackUi.c index 913d52b0cc8..0c903203334 100644 --- src/hg/hgTrackUi/hgTrackUi.c +++ src/hg/hgTrackUi/hgTrackUi.c @@ -3994,30 +3994,39 @@ else specificUi(tdb, tdbList, ct, ajax); // Decorator UI struct slName *decoratorSettings = trackDbSettingsWildMatch(tdb, "decorator.*"); if (decoratorSettings) { char *browserVersion; if (btIE == cgiClientBrowser(&browserVersion, NULL, NULL) && *browserVersion < '8') htmlHorizontalLine(); else printf("<HR ALIGN='bottom' style='position:relative; top:1em;'>"); decoratorUi(tdb, cart, decoratorSettings); } +// Repeat the Submit button near the bottom of the form so that users do not +// have to scroll back up to the top after tweaking filters on a long page. +if (!ajax) + { + puts("<p style='margin-top:1em;'>"); + cgiMakeButton("Submit", "Submit"); + puts("</p>"); + } + puts("</FORM>"); if (ajax) return; if (ct) { /* hidden form for custom tracks CGI */ printf("<FORM ACTION='%s' NAME='customTrackForm'>", hgCustomName()); cartSaveSession(cart); cgiMakeHiddenVar(CT_SELECTED_TABLE_VAR, tdb->track); puts("</FORM>\n"); if (ct->bbiFile) { time_t timep = bbiUpdateTime(ct->bbiFile);