Skip to content
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

Windows 10: Time picker values are not announced #5231

Closed
nvaccessAuto opened this issue Jul 18, 2015 · 10 comments · Fixed by #9113
Closed

Windows 10: Time picker values are not announced #5231

nvaccessAuto opened this issue Jul 18, 2015 · 10 comments · Fixed by #9113
Labels
bug p4 https://github.com/nvaccess/nvda/blob/master/projectDocs/issues/triage.md#priority
Milestone

Comments

@nvaccessAuto
Copy link

Reported by nvdakor on 2015-07-18 07:13
Hi,
A number of apps uses so-called time picker to select hour, minute, period and so on. So far, this appears when creating new alarms in the Alarms and Clock app and when selecting the time to restart to finish installing updates. For these controls, NVDA does not announce values as the picker changes.
STR:

  1. Open an app that uses time picker controls such as Alarms.
  2. If Alarms app is opened, select New, then type the name for an alarm.
  3. Press TAB to move to the time picker. Press ENTER to begin interacting with it, and use up and down arrows to change values. In case of Alarms, the first picker will be hour selector.
    Expected: NVDA announces values when one presses up or down arrows to select an item from a time picker.
    Actual: Value isn't announced.

Technical: Yet another UIA friend. Thankfully, developer info says it has class name of LoopingSelector (doesn't matter which selector we're dealing with, as it'll have different cached class name but they are really LoopingSelector controls). Also, NVDA says it is a list when it might be best to classify it as a slider (I think reclassifying it as a slider might be the easiest solution). I'll do some more investigation into this guy.
Thanks.

@nvaccessAuto
Copy link
Author

Comment 1 by nvdakor on 2015-07-22 07:00
Hi,
Further investigation shows the following:

  • The actual item we are interested in has class name of LoopingSelectorItem.
  • According to Accevent, a selection event is fired when I press arrow keys to select values from time pickers. This suggests we can borrow selection event from Start Screen search box (searchui.py).
  • One issue is that current time picker value is not announced when focus moves to the next or previous time picker control. This suggests we need to perhaps route the navigator object to the original item when focus moves to the time picker.
  • A variation of this looping control can be found in Windows 8.x (Alarms app has a weird slider similar to what we are dealing with here except it announces percents instead of time).
    I'll attach an app module that may fix this issue for Alarms and Clock app where LoopingSelector/LoopingSelectorItem lives. However, the general solution might be to add looping selector item into NVDAObjects.UIA package to deal with looping selectors in other areas such as Settings/System/Windows Update in Windows 10.
    Thanks.

@nvaccessAuto
Copy link
Author

Attachment time.py added by nvdakor on 2015-07-22 07:24
Description:
A proof of concept app module for Alarms and Clock app (time.py) that announces selected time picker items.

@nvaccessAuto
Copy link
Author

Comment 2 by Joseph Lee <joseph.lee22590@... on 2015-08-25 02:54
In [812b1f2]:

UIA: Make sure to announce time selector items when values change such as those found in Alarms and Clock app and when selecting a time to install Windows Updates. re #5231

@josephsl
Copy link
Collaborator

Hi,

Coming back to this ticket...

During a conversation with @jcsteh, possibility of integrating support for Alarms and Clock and other apps into NVDA core was brought up. Thankfully, Windows 10 App Essentials add-on has a pull request quality code for looping selector items.

Thanks.

@LeonarddeR
Copy link
Collaborator

@josephsl: Is the needs code review label still valid for this issue?

@josephsl
Copy link
Collaborator

josephsl commented Jul 15, 2017 via email

@jcsteh
Copy link
Contributor

jcsteh commented Jul 17, 2017

Dropping needsCodeReview, as @josephsl will be able to submit a PR if/when he wishes. Thanks.

@jcsteh
Copy link
Contributor

jcsteh commented Jul 17, 2017

When creating an Alarm, the value does seem to get announced for me when I use the arrow keys in the lists. This is possibly the result of another recent fix. The current value isn't announced when focusing the list, though.

P3 because it's possible to work around this, but it's annoying/inefficient nevertheless.

@jcsteh jcsteh added the p4 https://github.com/nvaccess/nvda/blob/master/projectDocs/issues/triage.md#priority label Jul 17, 2017
@josephsl
Copy link
Collaborator

Hi,

Eighteen months later...

I'm putting the code through some more scenarios, and will provide a pull request once the code in my add-on says it is still working in Version 1809 (hopefully in the next few hours or so).

Thanks.

@josephsl
Copy link
Collaborator

Hi,

Technical: looping selectors do not expose value pattern (some might). For those that wouldn't, it would be best to coerce them into combo box without value pattern objects. not only this simplifies class checks, but it also removes code duplication.

Thanks.

josephsl added a commit to josephsl/nvda that referenced this issue Dec 30, 2018
…bo boxes without value pattern. Re nvaccess#5231.

Looping selectors are used to select an item from values that wraps around, especially employed in time pickers 9SEttings, Alarms and Clock and others). Becasue they do not expose values, treat them as combo box without value pattern objects. This then allows NVDA to ask UIA to fetch the selected value by querying the selected element.
@nvaccessAuto nvaccessAuto added this to the 2019.1 milestone Jan 8, 2019
michaelDCurran pushed a commit that referenced this issue Jan 8, 2019
… pattern (#9113)

* UIA objects: import changes.

Remove duplicated 'import time'.
When importing Edge, use relative import to make it Python 3 compliant.

* NVDAObjects/UIA: treat looping selectors without value pattern as combo boxes without value pattern. Re #5231.

Looping selectors are used to select an item from values that wraps around, especially employed in time pickers 9SEttings, Alarms and Clock and others). Becasue they do not expose values, treat them as combo box without value pattern objects. This then allows NVDA to ask UIA to fetch the selected value by querying the selected element.

* Update what's new.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug p4 https://github.com/nvaccess/nvda/blob/master/projectDocs/issues/triage.md#priority
Projects
None yet
Development

Successfully merging a pull request may close this issue.

4 participants