-
Notifications
You must be signed in to change notification settings - Fork 12
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Keyboard traversal is broken when ComboBoxListBox contains invisible items or the order of items is changed. #859
Comments
Looking at ComboBoxListBox, this is the relevant part of it's KeyboardListener: else if ( keysPressed === 'arrowUp' || keysPressed === 'arrowDown' ) {
const domEvent = sceneryEvent.domEvent!;
assert && assert( domEvent, 'domEvent is required for this listener' );
// prevent "native" behavior so that Safari doesn't make an error sound with arrow keys in
// full screen mode, see #210
domEvent.preventDefault();
// Up/down arrow keys move the focus between items in the list box
const direction = keysPressed === 'arrowDown' ? 1 : -1;
const focusedItemIndex = this.visibleListItemNodes.indexOf( this.getFocusedItemNode() );
assert && assert( focusedItemIndex > -1, 'how could we receive keydown without a focused list item?' );
const nextIndex = focusedItemIndex + direction;
this.visibleListItemNodes[ nextIndex ] && this.visibleListItemNodes[ nextIndex ].focus();
// reserve for drag after focus has moved, as the change in focus will clear the intent on the pointer
sceneryEvent.pointer.reserveForKeyboardDrag();
} Looking at public setItemVisible( value: T, visible: boolean ): void {
this.getListItemNode( value ).visible = visible;
this.visibleListItemNodes = _.filter( this.listItemNodes, itemNode => itemNode.visible );
} PhET-iO sims to not change the visibility of items by calling I see used of |
This line in ComboBoxListBox construtor is also wrong; it assumes that all items are initially visible: this.visibleListItemNodes = listItemNodes.slice(); |
Fixed in the above commit. Tested in my-solar-system, density, and fourier-making-waves. @jessegreenberg please review. I don't follow how to test the use of Next step will be to figure out what to do about published PhET-iO sims (like density) that have this bug. |
Should I take the time to get up to speed on this issue, and figure out to sufficiently test cck-dc? Or would it be ok to describe how @pixelzoom or @jessegreenberg could exercise |
I've identified which published sims have these problem. They are:
Here's the process that I used to identify those sims: PhET-iO API files for these sims contain the element "listBox", and therefore potentially have this problem.
From that list, these sims have been published (have links at https://bayes.colorado.edu/dev/phet-io/latest/):
From that list, these sims have alt input enabled (
Finally, from that list, these sims instrument
Assigning to @brent-phet and @kathy-phet to decided whether to do an MR. Assuming that @jessegreenberg is OK with how I've fixed this, there is one commit to cherry-pick, involving 1 file: a9815df. |
@samreid asked:
Happy to pair with you on this on Zoom. But FYI, some useful documentation in LabScreenView would have made your involvement and this back-and-forth unnecessary. Here's the relevant code, which says nothing about why the item is being made visible, or why it was not visible in the first place. // Scroll to the real bulbs if selected, but not on startup
model.addRealBulbsProperty.link( addRealBulbs => {
this.circuitElementToolbox.carousel.setItemVisible( realBulbItem, addRealBulbs );
if ( addRealBulbs ) {
this.circuitElementToolbox.carousel.scrollToItem( realBulbItem );
}
} ); |
Blocks publication of sims, and creation of my-solar-system 1.3 release branch, until the code review portion of this issue is completed. |
There is another serious problem with ComboBoxListBox, reported in phetsims/my-solar-system#308. PhET-iO allows you to change the order of items in the listBox. ComboBoxListBox does not adjust the order of
@jessegreenberg How do you want to proceed with this? If it were me, I'd investigate getting rid of |
Thanks for looking into this, your change looks good. But for #859 (comment), using Now there is another problem. If PhET-iO makes the selected item invisible, it also breaks alt input for the ComboBox because the selected item cannot receive focus. I'm working on that next. |
…io#1974, getPhetioOverridesFile, phetsims/phet-io#1974, createFromStandardPhetioWrapper: phetsims/phet-io#1974, getDOMElementID: phetsims/phet-io#1974, SIMULATION_VERSION_STRING: phetsims/phet-io#1974, phetmarks-perennial-url: phetsims/phet-io#1974, SIMULATION_VERSION_MAJOR_MINOR_STRING1: phetsims/phet-io#1974, unlinkIndex: phetsims/phet-io#1974, getSimulationURL: phetsims/phet-io#1974, addSimulationInitializedListener: phetsims/phet-io#1974, launchSimulation: phetsims/phet-io#1974, displaySimulation: phetsims/phet-io#1974, setSimulationStartedMetadata: phetsims/phet-io#1974, clientGuide: phetsims/phet-io#1974, getPhetioElementState: phetsims/phet-io#1974, keyboardTraversal: phetsims/sun#859, phetsims/sun#861, phetsims/sun#862, phetioClientRename: phetsims/phet-io#1965
…o#1974, getPhetioOverridesFile, phetsims/phet-io#1974, createFromStandardPhetioWrapper: phetsims/phet-io#1974, getDOMElementID: phetsims/phet-io#1974, SIMULATION_VERSION_STRING: phetsims/phet-io#1974, phetmarks-perennial-url: phetsims/phet-io#1974, SIMULATION_VERSION_MAJOR_MINOR_STRING1: phetsims/phet-io#1974, unlinkIndex: phetsims/phet-io#1974, getSimulationURL: phetsims/phet-io#1974, addSimulationInitializedListener: phetsims/phet-io#1974, launchSimulation: phetsims/phet-io#1974, displaySimulation: phetsims/phet-io#1974, setSimulationStartedMetadata: phetsims/phet-io#1974, clientGuide: phetsims/phet-io#1974, getPhetioElementState: phetsims/phet-io#1974, keyboardTraversal: phetsims/sun#859, phetsims/sun#861, phetsims/sun#862, phetioClientRename: phetsims/phet-io#1965
This was confirmed fixed by QA for all MR sims with a Combo Box. Closing |
…o#1974, getPhetioOverridesFile, phetsims/phet-io#1974, createFromStandardPhetioWrapper: phetsims/phet-io#1974, getDOMElementID: phetsims/phet-io#1974, SIMULATION_VERSION_STRING: phetsims/phet-io#1974, phetmarks-perennial-url: phetsims/phet-io#1974, SIMULATION_VERSION_MAJOR_MINOR_STRING1: phetsims/phet-io#1974, unlinkIndex: phetsims/phet-io#1974, getSimulationURL: phetsims/phet-io#1974, addSimulationInitializedListener: phetsims/phet-io#1974, launchSimulation: phetsims/phet-io#1974, displaySimulation: phetsims/phet-io#1974, setSimulationStartedMetadata: phetsims/phet-io#1974, clientGuide: phetsims/phet-io#1974, getPhetioElementState: phetsims/phet-io#1974, keyboardTraversal: phetsims/sun#859, phetsims/sun#861, phetsims/sun#862, phetioClientRename: phetsims/phet-io#1965, phetsims/studio#317
…o#1974, getPhetioOverridesFile, phetsims/phet-io#1974, createFromStandardPhetioWrapper: phetsims/phet-io#1974, getDOMElementID: phetsims/phet-io#1974, SIMULATION_VERSION_STRING: phetsims/phet-io#1974, SIMULATION_VERSION_MAJOR_MINOR_STRING1: phetsims/phet-io#1974, unlinkIndex: phetsims/phet-io#1974, getSimulationURL: phetsims/phet-io#1974, addSimulationInitializedListener: phetsims/phet-io#1974, launchSimulation: phetsims/phet-io#1974, displaySimulation: phetsims/phet-io#1974, setSimulationStartedMetadata: phetsims/phet-io#1974, clientGuide: phetsims/phet-io#1974, getPhetioElementState: phetsims/phet-io#1974, keyboardTraversal: phetsims/sun#859, phetsims/scenery#1550, phetsims/sun#864, phetsims/sun#861, phetsims/sun#862, phetioClientRename: phetsims/phet-io#1965, phetsims/studio#317
…o#1974, getPhetioOverridesFile, phetsims/phet-io#1974, createFromStandardPhetioWrapper: phetsims/phet-io#1974, getDOMElementID: phetsims/phet-io#1974, SIMULATION_VERSION_STRING: phetsims/phet-io#1974, phetmarks-perennial-url: phetsims/phet-io#1974, SIMULATION_VERSION_MAJOR_MINOR_STRING1: phetsims/phet-io#1974, unlinkIndex: phetsims/phet-io#1974, getSimulationURL: phetsims/phet-io#1974, addSimulationInitializedListener: phetsims/phet-io#1974, launchSimulation: phetsims/phet-io#1974, displaySimulation: phetsims/phet-io#1974, setSimulationStartedMetadata: phetsims/phet-io#1974, clientGuide: phetsims/phet-io#1974, getPhetioElementState: phetsims/phet-io#1974, keyboardTraversal: phetsims/sun#859, phetsims/sun#861, phetsims/sun#862, phetioClientRename: phetsims/phet-io#1965, phetsims/studio#317
…o#1974, getPhetioOverridesFile, phetsims/phet-io#1974, createFromStandardPhetioWrapper: phetsims/phet-io#1974, getDOMElementID: phetsims/phet-io#1974, SIMULATION_VERSION_STRING: phetsims/phet-io#1974, SIMULATION_VERSION_MAJOR_MINOR_STRING1: phetsims/phet-io#1974, unlinkIndex: phetsims/phet-io#1974, getSimulationURL: phetsims/phet-io#1974, addSimulationInitializedListener: phetsims/phet-io#1974, launchSimulation: phetsims/phet-io#1974, displaySimulation: phetsims/phet-io#1974, setSimulationStartedMetadata: phetsims/phet-io#1974, clientGuide: phetsims/phet-io#1974, getPhetioElementState: phetsims/phet-io#1974, keyboardTraversal: phetsims/sun#859, phetsims/scenery#1550, phetsims/sun#861, phetsims/sun#862, phetioClientRename: phetsims/phet-io#1965, phetsims/studio#317
…o#1974, getPhetioOverridesFile, phetsims/phet-io#1974, createFromStandardPhetioWrapper: phetsims/phet-io#1974, getDOMElementID: phetsims/phet-io#1974, SIMULATION_VERSION_STRING: phetsims/phet-io#1974, SIMULATION_VERSION_MAJOR_MINOR_STRING1: phetsims/phet-io#1974, unlinkIndex: phetsims/phet-io#1974, getSimulationURL: phetsims/phet-io#1974, addSimulationInitializedListener: phetsims/phet-io#1974, launchSimulation: phetsims/phet-io#1974, displaySimulation: phetsims/phet-io#1974, setSimulationStartedMetadata: phetsims/phet-io#1974, clientGuide: phetsims/phet-io#1974, getPhetioElementState: phetsims/phet-io#1974, keyboardTraversal: phetsims/sun#859, phetsims/scenery#1550, phetsims/sun#861, phetsims/sun#862, phetioClientRename: phetsims/phet-io#1965, phetsims/studio#317
…o#1974, getPhetioOverridesFile, phetsims/phet-io#1974, createFromStandardPhetioWrapper: phetsims/phet-io#1974, getDOMElementID: phetsims/phet-io#1974, SIMULATION_VERSION_STRING: phetsims/phet-io#1974, SIMULATION_VERSION_MAJOR_MINOR_STRING1: phetsims/phet-io#1974, unlinkIndex: phetsims/phet-io#1974, getSimulationURL: phetsims/phet-io#1974, addSimulationInitializedListener: phetsims/phet-io#1974, launchSimulation: phetsims/phet-io#1974, displaySimulation: phetsims/phet-io#1974, setSimulationStartedMetadata: phetsims/phet-io#1974, clientGuide: phetsims/phet-io#1974, getPhetioElementState: phetsims/phet-io#1974, keyboardTraversal: phetsims/sun#859, phetsims/scenery#1550, phetsims/sun#861, phetsims/sun#862, phetioClientRename: phetsims/phet-io#1965, phetsims/studio#317
…o#1974, getPhetioOverridesFile, phetsims/phet-io#1974, createFromStandardPhetioWrapper: phetsims/phet-io#1974, getDOMElementID: phetsims/phet-io#1974, SIMULATION_VERSION_STRING: phetsims/phet-io#1974, SIMULATION_VERSION_MAJOR_MINOR_STRING1: phetsims/phet-io#1974, unlinkIndex: phetsims/phet-io#1974, getSimulationURL: phetsims/phet-io#1974, addSimulationInitializedListener: phetsims/phet-io#1974, launchSimulation: phetsims/phet-io#1974, displaySimulation: phetsims/phet-io#1974, setSimulationStartedMetadata: phetsims/phet-io#1974, clientGuide: phetsims/phet-io#1974, getPhetioElementState: phetsims/phet-io#1974, keyboardTraversal: phetsims/sun#859, phetsims/scenery#1550, phetsims/sun#864, phetsims/sun#861, phetsims/sun#862, phetioClientRename: phetsims/phet-io#1965, phetsims/studio#317
…o#1974, getPhetioOverridesFile, phetsims/phet-io#1974, createFromStandardPhetioWrapper: phetsims/phet-io#1974, getDOMElementID: phetsims/phet-io#1974, SIMULATION_VERSION_STRING: phetsims/phet-io#1974, SIMULATION_VERSION_MAJOR_MINOR_STRING1: phetsims/phet-io#1974, unlinkIndex: phetsims/phet-io#1974, getSimulationURL: phetsims/phet-io#1974, addSimulationInitializedListener: phetsims/phet-io#1974, launchSimulation: phetsims/phet-io#1974, displaySimulation: phetsims/phet-io#1974, setSimulationStartedMetadata: phetsims/phet-io#1974, clientGuide: phetsims/phet-io#1974, getPhetioElementState: phetsims/phet-io#1974, keyboardTraversal: phetsims/sun#859, phetsims/scenery#1550, phetsims/sun#861, phetsims/sun#862, phetioClientRename: phetsims/phet-io#1965, phetsims/studio#317
…o#1974, getPhetioOverridesFile, phetsims/phet-io#1974, createFromStandardPhetioWrapper: phetsims/phet-io#1974, getDOMElementID: phetsims/phet-io#1974, SIMULATION_VERSION_STRING: phetsims/phet-io#1974, phetmarks-perennial-url: phetsims/phet-io#1974, SIMULATION_VERSION_MAJOR_MINOR_STRING1: phetsims/phet-io#1974, unlinkIndex: phetsims/phet-io#1974, getSimulationURL: phetsims/phet-io#1974, addSimulationInitializedListener: phetsims/phet-io#1974, launchSimulation: phetsims/phet-io#1974, displaySimulation: phetsims/phet-io#1974, setSimulationStartedMetadata: phetsims/phet-io#1974, clientGuide: phetsims/phet-io#1974, getPhetioElementState: phetsims/phet-io#1974, keyboardTraversal: phetsims/sun#859, phetsims/sun#861, phetsims/sun#862, phetioClientRename: phetsims/phet-io#1965, phetsims/studio#317
…o#1974, getPhetioOverridesFile, phetsims/phet-io#1974, createFromStandardPhetioWrapper: phetsims/phet-io#1974, getDOMElementID: phetsims/phet-io#1974, SIMULATION_VERSION_STRING: phetsims/phet-io#1974, phetmarks-perennial-url: phetsims/phet-io#1974, SIMULATION_VERSION_MAJOR_MINOR_STRING1: phetsims/phet-io#1974, unlinkIndex: phetsims/phet-io#1974, getSimulationURL: phetsims/phet-io#1974, addSimulationInitializedListener: phetsims/phet-io#1974, launchSimulation: phetsims/phet-io#1974, displaySimulation: phetsims/phet-io#1974, setSimulationStartedMetadata: phetsims/phet-io#1974, clientGuide: phetsims/phet-io#1974, getPhetioElementState: phetsims/phet-io#1974, keyboardTraversal: phetsims/sun#859, phetsims/sun#861, phetsims/sun#862, phetioClientRename: phetsims/phet-io#1965, phetsims/studio#317
…io#1974, getPhetioOverridesFile, phetsims/phet-io#1974, createFromStandardPhetioWrapper: phetsims/phet-io#1974, getDOMElementID: phetsims/phet-io#1974, SIMULATION_VERSION_STRING: phetsims/phet-io#1974, phetmarks-perennial-url: phetsims/phet-io#1974, SIMULATION_VERSION_MAJOR_MINOR_STRING1: phetsims/phet-io#1974, unlinkIndex: phetsims/phet-io#1974, getSimulationURL: phetsims/phet-io#1974, addSimulationInitializedListener: phetsims/phet-io#1974, launchSimulation: phetsims/phet-io#1974, displaySimulation: phetsims/phet-io#1974, setSimulationStartedMetadata: phetsims/phet-io#1974, clientGuide: phetsims/phet-io#1974, getPhetioElementState: phetsims/phet-io#1974, keyboardTraversal: phetsims/sun#859, phetsims/sun#861, phetsims/sun#862, phetioClientRename: phetsims/phet-io#1965, phetsims/studio#317
…o#1974, getPhetioOverridesFile, phetsims/phet-io#1974, createFromStandardPhetioWrapper: phetsims/phet-io#1974, getDOMElementID: phetsims/phet-io#1974, SIMULATION_VERSION_STRING: phetsims/phet-io#1974, phetmarks-perennial-url: phetsims/phet-io#1974, SIMULATION_VERSION_MAJOR_MINOR_STRING1: phetsims/phet-io#1974, unlinkIndex: phetsims/phet-io#1974, getSimulationURL: phetsims/phet-io#1974, addSimulationInitializedListener: phetsims/phet-io#1974, launchSimulation: phetsims/phet-io#1974, displaySimulation: phetsims/phet-io#1974, setSimulationStartedMetadata: phetsims/phet-io#1974, clientGuide: phetsims/phet-io#1974, getPhetioElementState: phetsims/phet-io#1974, keyboardTraversal: phetsims/sun#859, phetsims/sun#861, phetsims/sun#862, phetioClientRename: phetsims/phet-io#1965, phetsims/studio#317
… getPhetioOverridesFile, phetsims/phet-io#1974, createFromStandardPhetioWrapper: phetsims/phet-io#1974, getDOMElementID: phetsims/phet-io#1974, SIMULATION_VERSION_STRING: phetsims/phet-io#1974, phetmarks-perennial-url: phetsims/phet-io#1974, SIMULATION_VERSION_MAJOR_MINOR_STRING1: phetsims/phet-io#1974, unlinkIndex: phetsims/phet-io#1974, getSimulationURL: phetsims/phet-io#1974, addSimulationInitializedListener: phetsims/phet-io#1974, launchSimulation: phetsims/phet-io#1974, displaySimulation: phetsims/phet-io#1974, setSimulationStartedMetadata: phetsims/phet-io#1974, clientGuide: phetsims/phet-io#1974, getPhetioElementState: phetsims/phet-io#1974, keyboardTraversal: phetsims/sun#859, phetsims/sun#861, phetsims/sun#862, phetioClientRename: phetsims/phet-io#1965, phetsims/studio#317
… getPhetioOverridesFile, phetsims/phet-io#1974, createFromStandardPhetioWrapper: phetsims/phet-io#1974, getDOMElementID: phetsims/phet-io#1974, SIMULATION_VERSION_STRING: phetsims/phet-io#1974, SIMULATION_VERSION_MAJOR_MINOR_STRING1: phetsims/phet-io#1974, unlinkIndex: phetsims/phet-io#1974, getSimulationURL: phetsims/phet-io#1974, addSimulationInitializedListener: phetsims/phet-io#1974, launchSimulation: phetsims/phet-io#1974, displaySimulation: phetsims/phet-io#1974, setSimulationStartedMetadata: phetsims/phet-io#1974, clientGuide: phetsims/phet-io#1974, getPhetioElementState: phetsims/phet-io#1974, keyboardTraversal: phetsims/sun#859, phetsims/scenery#1550, phetsims/sun#864, phetsims/sun#861, phetsims/sun#862, phetioClientRename: phetsims/phet-io#1965, phetsims/studio#317
… getPhetioOverridesFile, phetsims/phet-io#1974, createFromStandardPhetioWrapper: phetsims/phet-io#1974, getDOMElementID: phetsims/phet-io#1974, SIMULATION_VERSION_STRING: phetsims/phet-io#1974, phetmarks-perennial-url: phetsims/phet-io#1974, SIMULATION_VERSION_MAJOR_MINOR_STRING1: phetsims/phet-io#1974, unlinkIndex: phetsims/phet-io#1974, getSimulationURL: phetsims/phet-io#1974, addSimulationInitializedListener: phetsims/phet-io#1974, launchSimulation: phetsims/phet-io#1974, displaySimulation: phetsims/phet-io#1974, setSimulationStartedMetadata: phetsims/phet-io#1974, clientGuide: phetsims/phet-io#1974, getPhetioElementState: phetsims/phet-io#1974, keyboardTraversal: phetsims/sun#859, phetsims/sun#861, phetsims/sun#862, phetioClientRename: phetsims/phet-io#1965, phetsims/studio#317
… getPhetioOverridesFile, phetsims/phet-io#1974, createFromStandardPhetioWrapper: phetsims/phet-io#1974, getDOMElementID: phetsims/phet-io#1974, SIMULATION_VERSION_STRING: phetsims/phet-io#1974, SIMULATION_VERSION_MAJOR_MINOR_STRING1: phetsims/phet-io#1974, unlinkIndex: phetsims/phet-io#1974, getSimulationURL: phetsims/phet-io#1974, addSimulationInitializedListener: phetsims/phet-io#1974, launchSimulation: phetsims/phet-io#1974, displaySimulation: phetsims/phet-io#1974, setSimulationStartedMetadata: phetsims/phet-io#1974, clientGuide: phetsims/phet-io#1974, getPhetioElementState: phetsims/phet-io#1974, keyboardTraversal: phetsims/sun#859, phetsims/scenery#1550, phetsims/sun#861, phetsims/sun#862, phetioClientRename: phetsims/phet-io#1965, phetsims/studio#317
… getPhetioOverridesFile, phetsims/phet-io#1974, createFromStandardPhetioWrapper: phetsims/phet-io#1974, getDOMElementID: phetsims/phet-io#1974, SIMULATION_VERSION_STRING: phetsims/phet-io#1974, SIMULATION_VERSION_MAJOR_MINOR_STRING1: phetsims/phet-io#1974, unlinkIndex: phetsims/phet-io#1974, getSimulationURL: phetsims/phet-io#1974, addSimulationInitializedListener: phetsims/phet-io#1974, launchSimulation: phetsims/phet-io#1974, displaySimulation: phetsims/phet-io#1974, setSimulationStartedMetadata: phetsims/phet-io#1974, clientGuide: phetsims/phet-io#1974, getPhetioElementState: phetsims/phet-io#1974, keyboardTraversal: phetsims/sun#859, phetsims/scenery#1550, phetsims/sun#861, phetsims/sun#862, phetioClientRename: phetsims/phet-io#1965, phetsims/studio#317
… getPhetioOverridesFile, phetsims/phet-io#1974, createFromStandardPhetioWrapper: phetsims/phet-io#1974, getDOMElementID: phetsims/phet-io#1974, SIMULATION_VERSION_STRING: phetsims/phet-io#1974, SIMULATION_VERSION_MAJOR_MINOR_STRING1: phetsims/phet-io#1974, unlinkIndex: phetsims/phet-io#1974, getSimulationURL: phetsims/phet-io#1974, addSimulationInitializedListener: phetsims/phet-io#1974, launchSimulation: phetsims/phet-io#1974, displaySimulation: phetsims/phet-io#1974, setSimulationStartedMetadata: phetsims/phet-io#1974, clientGuide: phetsims/phet-io#1974, getPhetioElementState: phetsims/phet-io#1974, keyboardTraversal: phetsims/sun#859, phetsims/scenery#1550, phetsims/sun#861, phetsims/sun#862, phetioClientRename: phetsims/phet-io#1965, phetsims/studio#317
… getPhetioOverridesFile, phetsims/phet-io#1974, createFromStandardPhetioWrapper: phetsims/phet-io#1974, getDOMElementID: phetsims/phet-io#1974, SIMULATION_VERSION_STRING: phetsims/phet-io#1974, SIMULATION_VERSION_MAJOR_MINOR_STRING1: phetsims/phet-io#1974, unlinkIndex: phetsims/phet-io#1974, getSimulationURL: phetsims/phet-io#1974, addSimulationInitializedListener: phetsims/phet-io#1974, launchSimulation: phetsims/phet-io#1974, displaySimulation: phetsims/phet-io#1974, setSimulationStartedMetadata: phetsims/phet-io#1974, clientGuide: phetsims/phet-io#1974, getPhetioElementState: phetsims/phet-io#1974, keyboardTraversal: phetsims/sun#859, phetsims/scenery#1550, phetsims/sun#864, phetsims/sun#861, phetsims/sun#862, phetioClientRename: phetsims/phet-io#1965, phetsims/studio#317
… getPhetioOverridesFile, phetsims/phet-io#1974, createFromStandardPhetioWrapper: phetsims/phet-io#1974, getDOMElementID: phetsims/phet-io#1974, SIMULATION_VERSION_STRING: phetsims/phet-io#1974, SIMULATION_VERSION_MAJOR_MINOR_STRING1: phetsims/phet-io#1974, unlinkIndex: phetsims/phet-io#1974, getSimulationURL: phetsims/phet-io#1974, addSimulationInitializedListener: phetsims/phet-io#1974, launchSimulation: phetsims/phet-io#1974, displaySimulation: phetsims/phet-io#1974, setSimulationStartedMetadata: phetsims/phet-io#1974, clientGuide: phetsims/phet-io#1974, getPhetioElementState: phetsims/phet-io#1974, keyboardTraversal: phetsims/sun#859, phetsims/scenery#1550, phetsims/sun#861, phetsims/sun#862, phetioClientRename: phetsims/phet-io#1965, phetsims/studio#317
… getPhetioOverridesFile, phetsims/phet-io#1974, createFromStandardPhetioWrapper: phetsims/phet-io#1974, getDOMElementID: phetsims/phet-io#1974, SIMULATION_VERSION_STRING: phetsims/phet-io#1974, phetmarks-perennial-url: phetsims/phet-io#1974, SIMULATION_VERSION_MAJOR_MINOR_STRING1: phetsims/phet-io#1974, unlinkIndex: phetsims/phet-io#1974, getSimulationURL: phetsims/phet-io#1974, addSimulationInitializedListener: phetsims/phet-io#1974, launchSimulation: phetsims/phet-io#1974, displaySimulation: phetsims/phet-io#1974, setSimulationStartedMetadata: phetsims/phet-io#1974, clientGuide: phetsims/phet-io#1974, getPhetioElementState: phetsims/phet-io#1974, keyboardTraversal: phetsims/sun#859, phetsims/sun#861, phetsims/sun#862, phetioClientRename: phetsims/phet-io#1965, phetsims/studio#317
… getPhetioOverridesFile, phetsims/phet-io#1974, createFromStandardPhetioWrapper: phetsims/phet-io#1974, getDOMElementID: phetsims/phet-io#1974, SIMULATION_VERSION_STRING: phetsims/phet-io#1974, phetmarks-perennial-url: phetsims/phet-io#1974, SIMULATION_VERSION_MAJOR_MINOR_STRING1: phetsims/phet-io#1974, unlinkIndex: phetsims/phet-io#1974, getSimulationURL: phetsims/phet-io#1974, addSimulationInitializedListener: phetsims/phet-io#1974, launchSimulation: phetsims/phet-io#1974, displaySimulation: phetsims/phet-io#1974, setSimulationStartedMetadata: phetsims/phet-io#1974, clientGuide: phetsims/phet-io#1974, getPhetioElementState: phetsims/phet-io#1974, keyboardTraversal: phetsims/sun#859, phetsims/sun#861, phetsims/sun#862, phetioClientRename: phetsims/phet-io#1965, phetsims/studio#317
…, getPhetioOverridesFile, phetsims/phet-io#1974, createFromStandardPhetioWrapper: phetsims/phet-io#1974, getDOMElementID: phetsims/phet-io#1974, SIMULATION_VERSION_STRING: phetsims/phet-io#1974, phetmarks-perennial-url: phetsims/phet-io#1974, SIMULATION_VERSION_MAJOR_MINOR_STRING1: phetsims/phet-io#1974, unlinkIndex: phetsims/phet-io#1974, getSimulationURL: phetsims/phet-io#1974, addSimulationInitializedListener: phetsims/phet-io#1974, launchSimulation: phetsims/phet-io#1974, displaySimulation: phetsims/phet-io#1974, setSimulationStartedMetadata: phetsims/phet-io#1974, clientGuide: phetsims/phet-io#1974, getPhetioElementState: phetsims/phet-io#1974, keyboardTraversal: phetsims/sun#859, phetsims/sun#861, phetsims/sun#862, phetioClientRename: phetsims/phet-io#1965, phetsims/studio#317
… getPhetioOverridesFile, phetsims/phet-io#1974, createFromStandardPhetioWrapper: phetsims/phet-io#1974, getDOMElementID: phetsims/phet-io#1974, SIMULATION_VERSION_STRING: phetsims/phet-io#1974, phetmarks-perennial-url: phetsims/phet-io#1974, SIMULATION_VERSION_MAJOR_MINOR_STRING1: phetsims/phet-io#1974, unlinkIndex: phetsims/phet-io#1974, getSimulationURL: phetsims/phet-io#1974, addSimulationInitializedListener: phetsims/phet-io#1974, launchSimulation: phetsims/phet-io#1974, displaySimulation: phetsims/phet-io#1974, setSimulationStartedMetadata: phetsims/phet-io#1974, clientGuide: phetsims/phet-io#1974, getPhetioElementState: phetsims/phet-io#1974, keyboardTraversal: phetsims/sun#859, phetsims/sun#861, phetsims/sun#862, phetioClientRename: phetsims/phet-io#1965, phetsims/studio#317
Discovered in phetsims/my-solar-system#306 for phetsims/qa#1008 ...
Keyboard traversal is broken when ComboBoxListBox contains invisible items. Since PhET-iO allow clients to show/hide listbox items, this is a serious problem that affects PhET-iO sims. See phetsims/my-solar-system#306 for examples in my-solar-system and density.
Git history suggested that @jessegreenberg added keyboard input to ComboBoxListBox, so I'll start by assigning to him. This is high priority -- my-solar-system is in a dev test, and need to create the release branch as soon as possible after the dev test is completed.
There also will need to be an evaluation of which published PhET-iO sims contains this bug, and whether that an MR is needed. Density is definitely broken, and there may be others.
The text was updated successfully, but these errors were encountered: