Change:
Microsoft/vscode Repro: PR ext description page something, shift+tab until you hit the start of the screen There are 4 focusable items, close, next match, previous match and the find input.
Would you like me to start on this?
Yes please. It is too late to get a fix in for the January VS Code release but you can submit a PR any time and we'll try to get this fixed for February
LOL ... my Dragon dictation did the equivalent of a butt dial , deleted assignments and pasted an eMoji sorry about that :-P
FYI: started on this and I can reproduce and see it. simpleFind transitions in and out with animation, hidden only because of z-index and/or overflow. The widget always has display type:flex , therefore the four tabs stops for the buttons and input are always in the tabIndex order fix should be simple, however, there is an interaction between the animation and the display mode such that simultaneously going from display:none =flex messes up the animation. I'm working on separating the display mode from the transition to see if that will work. I have to do more experiments , May have a question or two later...
See PR: Verification: Use a screen reader with screen output on so you can see and track each tab stop Open the new pull request extension page Click on the upper pane to begin focus there Tab through the various toolbar buttons , after dependencies the next tab SHOULD land on With the webview not the simpleFind widget. Verify showing and hiding simpleFind has smooth animation as before Note: When focuses on bottom for web view pane , screen readers output a bunch of base64 encoded text (see truncated output lines below). But I think this is an accessibility bug, if you guys agree I'll post an issue. NVDA Output: with visibility fix (correct output, no tab stops within the hidden simpleFind) NVDA Output: original scenario without fix (can see tabs stops in widget)

Discussion:
} .monaco-workbench .simple-find-part { <ins> visibility: hidden;		/* Use visibility to maintain flex layout while hidden otherwise interferes with transition */ </ins> z-index: 10; position: relative; top: -45px;

} .monaco-workbench .simple-find-part.visible { <ins> visibility: visible; } .monaco-workbench .simple-find-part.visible-transition { </ins> top: 0; }

setTimeout(() => { dom.addClass(this._innerDomNode, 'visible'); <ins> dom.addClass(this._innerDomNode, 'visible-transition'); </ins> this._innerDomNode.setAttribute('aria-hidden', 'false'); setTimeout(() => { this._findInput.select();

setTimeout(() => { dom.addClass(this._innerDomNode, 'visible'); <ins> dom.addClass(this._innerDomNode, 'visible-transition'); </ins> this._innerDomNode.setAttribute('aria-hidden', 'false'); }, 0); } public hide(): void { if (this._isVisible) { <del> this._isVisible = false; dom.removeClass(this._innerDomNode, 'visible'); </del> <ins> dom.removeClass(this._innerDomNode, 'visible-transition'); </ins> this._innerDomNode.setAttribute('aria-hidden', 'true'); <ins> // Need to delay toggling visibility until after Transition, then visibility hidden - removes from tabIndex list setTimeout(() => { this._isVisible = false; dom.removeClass(this._innerDomNode, 'visible'); }, 200); </ins> } }