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

Comments

Projects
None yet
4 participants
@nvaccessAuto
Copy link

nvaccessAuto commented Jul 18, 2015

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

This comment has been minimized.

Copy link
Author

nvaccessAuto commented Jul 22, 2015

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

This comment has been minimized.

Copy link
Author

nvaccessAuto commented Jul 22, 2015

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

This comment has been minimized.

Copy link
Author

nvaccessAuto commented Aug 25, 2015

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

This comment has been minimized.

Copy link
Collaborator

josephsl commented May 26, 2017

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

This comment has been minimized.

Copy link
Collaborator

leonardder commented Jul 15, 2017

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

@josephsl

This comment has been minimized.

Copy link
Collaborator

josephsl commented Jul 15, 2017

@jcsteh

This comment has been minimized.

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 jcsteh removed the needsCodeReview label Jul 17, 2017

@jcsteh

This comment has been minimized.

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 p3 label Jul 17, 2017

@josephsl

This comment has been minimized.

Copy link
Collaborator

josephsl commented Dec 30, 2018

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

This comment has been minimized.

Copy link
Collaborator

josephsl commented Dec 30, 2018

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

NVDAObjects/UIA: treat looping selectors without value pattern as com…
…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 added a commit that referenced this issue Jan 8, 2019

NVDAObjects/UIA: treat looping selectors as combo boxes without value…
… 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
You can’t perform that action at this time.