Repository: nvaccess/nvda

Issue:
NVDA will not activate focus mode when virtually navigating to listboxes which use roaming tabindex
#6936 looks to be a similar issue
### Steps to reproduce:
* navigate to: https://codepen.io/cordelia/pen/JwebzJ
* Toggle on browse mode
* m - Move to the frame containing the output
* Tab - focus the button inside the frame
* l - navigate by listbox. Press this a second time to navigate to the veggies list.
* Enter - Toggle off browse mode to allow arrow navigation of the listbox
* arrow up/down - navigate the list

### Actual behavior:
Enter is not toggling off browse mode. Manually turning it off does not work either, as focus is not inside the listbox

### Expected behavior:
Enter should toggle off browse mode, and allow arrows to move focus up and down the list.

### System configuration
#### NVDA installed/portable/running from source:
Installed
#### NVDA version:
2018.4.1
#### Windows version:
10.0.17134
#### Name and version of other software in use when reproducing the issue:
Did not seem to vary outcome
#### Other information about your system:
Browser: Chrome 71.0.3578.98 (Official Build) (64-bit)

### Other questions
#### Does the issue still occur after restarting your PC?
Yes
#### Have you tried any other versions of NVDA?
Yes, also occurs in 2018.3.2


Discussion:
Hi, a favor, if you don’t mind: can you verify that this bug comes up with other browsers (e.g. Firefox, Edge) please? Thanks.

 

From: Adam Rodenbeck <notifications@github.com> 
Sent: Tuesday, January 15, 2019 11:29 AM
To: nvaccess/nvda <nvda@noreply.github.com>
Cc: Subscribed <subscribed@noreply.github.com>
Subject: [nvaccess/nvda] NVDA will not activate focus mode when virtually navigating to listboxes which use roaming tabindex (#9157)

 

#6936 <https://github.com/nvaccess/nvda/issues/6936>  looks to be a similar issue


Steps to reproduce:


*	navigate to: https://codepen.io/cordelia/pen/JwebzJ
*	Toggle on browse mode
*	m - Move to the frame containing the output
*	Tab - focus the button inside the frame
*	l - navigate by listbox. Press this a second time to navigate to the veggies list.
*	Enter - Toggle off browse mode to allow arrow navigation of the listbox
*	arrow up/down - navigate the list


Actual behavior:


Enter is not toggling off browse mode. Manually turning it off does not work either, as focus is not inside the listbox


Expected behavior:


Enter should toggle off browse mode, and allow arrows to move focus up and down the list.


System configuration


NVDA installed/portable/running from source:


Installed


NVDA version:


2018.4.1


Windows version:


10.0.17134


Name and version of other software in use when reproducing the issue:


Did not seem to vary outcome


Other information about your system:


Browser: Chrome 71.0.3578.98 (Official Build) (64-bit)


Other questions


Does the issue still occur after restarting your PC?


Yes


Have you tried any other versions of NVDA?


Yes, also occurs in 2018.3.2

—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub <https://github.com/nvaccess/nvda/issues/9157> , or mute the thread <https://github.com/notifications/unsubscribe-auth/AHgLkDIXxcalAGWlc5AAABo3I2AbccCCks5vDivygaJpZM4aBpZ1> .


I verified this in Firefox 64.0.2, as well as in Edge. Firefox additionally adds some tab stops that seem out of place. Edge has some already reported issues with showing elements of the listbox in the virtual buffer. Edge also will not allow for navigating to the Fruits  listbox by hitting l for list. Fruits is an example of using aria-activedescendant, and generally works much better in Chrome and Firefox.
Hi, thanks for testing this in other browsers. CC @JCSTeh, @MichaelDCurran

 

From: Adam Rodenbeck <notifications@github.com> 
Sent: Tuesday, January 15, 2019 12:35 PM
To: nvaccess/nvda <nvda@noreply.github.com>
Cc: Joseph Lee <joseph.lee22590@gmail.com>; Comment <comment@noreply.github.com>
Subject: Re: [nvaccess/nvda] NVDA will not activate focus mode when virtually navigating to listboxes which use roaming tabindex (#9157)

 

I verified this in Firefox 64.0.2, as well as in Edge. Firefox additionally adds some tab stops that seem out of place. Edge has some already reported issues with showing elements of the listbox in the virtual buffer. Edge also will not allow for navigating to the Fruits listbox by hitting l for list. Fruits is an example of using aria-activedescendant, and generally works much better in Chrome and Firefox.

—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub <https://github.com/nvaccess/nvda/issues/9157#issuecomment-454541097> , or mute the thread <https://github.com/notifications/unsubscribe-auth/AHgLkPDQr6_Zu-X8Akird3p1pz5tBiJGks5vDjtggaJpZM4aBpZ1> .


I fixed this already in my geckoVbufRenderSelectedItem branch. Unfortunately, that is blocked by a Firefox bug I haven't been able to track down ([bug 1514093](https://bugzilla.mozilla.org/show_bug.cgi?id=1514093)) and a Chrome bug which hasn't yet been filed (see https://github.com/nvaccess/nvda/issues/3573#issuecomment-447180372).

Resolving patch:
diff --git a/source/browseMode.py b/source/browseMode.py
--- a/source/browseMode.py
+++ b/source/browseMode.py
@@ -262,6 +262,7 @@ def _get_currentNVDAObject(self):
 		controlTypes.ROLE_COMBOBOX,
 		controlTypes.ROLE_EDITABLETEXT,
 		controlTypes.ROLE_LIST,
+		controlTypes.ROLE_LISTITEM,
 		controlTypes.ROLE_SLIDER,
 		controlTypes.ROLE_TABCONTROL,
 		controlTypes.ROLE_MENUBAR,
diff --git a/source/speech.py b/source/speech.py
--- a/source/speech.py
+++ b/source/speech.py
@@ -1214,7 +1214,11 @@ def getControlFieldSpeech(attrs,ancestorAttrs,fieldType,formatConfig=None,extraD
 
 	# Determine the order of speech.
 	# speakContentFirst: Speak the content before the control field info.
-	speakContentFirst = reason == controlTypes.REASON_FOCUS and presCat != attrs.PRESCAT_CONTAINER and role not in (controlTypes.ROLE_EDITABLETEXT, controlTypes.ROLE_COMBOBOX) and not tableID and controlTypes.STATE_EDITABLE not in states
+	speakContentFirst = (reason == controlTypes.REASON_FOCUS
+		and presCat != attrs.PRESCAT_CONTAINER
+		and role not in (controlTypes.ROLE_EDITABLETEXT, controlTypes.ROLE_COMBOBOX, controlTypes.ROLE_TREEVIEW, controlTypes.ROLE_LIST)
+		and not tableID
+		and controlTypes.STATE_EDITABLE not in states)
 	# speakStatesFirst: Speak the states before the role.
 	speakStatesFirst=role==controlTypes.ROLE_LINK
 


Test patch: