ade21ee4e0109c70e29860d5393306e48e6a44d3 lrnassar Mon Mar 16 16:38:58 2026 -0700 Adding keyboard navigation accessibility to the Genome Browser menu bar and all main CGI pages. Converts non-focusable menu bar span elements to keyboard-accessible buttons using the W3C disclosure navigation pattern, adds aria-expanded state for screen readers, skip navigation link, and main content landmark. Also adds a Keyboard Navigation section to the accessibility page with screenshots. refs #37252 diff --git src/hg/lib/cart.c src/hg/lib/cart.c index 624ae97804a..9b48f969e07 100644 --- src/hg/lib/cart.c +++ src/hg/lib/cart.c @@ -3028,31 +3028,33 @@ char *db, *org, *pos; char titlePlus[2048]; pushWarnHandler(cartEarlyWarningHandler); cart = cartAndCookie(cookieName, exclude, oldVars); getDbAndGenome(cart, &db, &org, oldVars); pos = cartGetPosition(cart, db, NULL); pos = addCommasToPos(db, stripCommas(pos)); cartSetLastPosition(cart, pos, oldVars); safef(titlePlus, sizeof(titlePlus), "%s %s %s %s", org ? trackHubSkipHubName(org) : "", db ? db : "", pos ? pos : "", title); popWarnHandler(); cartGenericStartup(cart); htmStartWithHead(stdout, head, titlePlus); +puts("
"); cartWarnCatcher(doMiddle, cart, htmlVaWarn); +puts("
"); cartCheckout(&cart); cartFooter(); } static void cartEmptyShellMaybeContent(void (*doMiddle)(struct cart *cart), char *cookieName, char **exclude, struct hash *oldVars, boolean doContentType) /* Get cart and cookies and set up error handling. * If doContentType, print out Content-type:text/html * but don't start writing any html yet. * The doMiddleFunction has to call cartHtmlStart(title), and * cartHtmlEnd(), as well as writing the body of the HTML. * oldVars - those in cart that are overlayed by cgi-vars are * put in optional hash oldVars. */ { struct cart *cart = cartAndCookieWithHtml(cookieName, exclude, oldVars, doContentType);