No longer fail to read list of tweets in Tween#13560
Conversation
* Improve clarity of in-process and out of porcess methods * normalize location in the raw method to fix reading in Tween * Remove unnecesary Unicode arrow from headers in Tween
|
@LeonarddeR Requesting your review as well. |
|
This regression ideally should be fixed before rc. Are we aware of any other appModules or core functionality affected? As this is quite late in the beta cycle, changing code in Is it possible to fix this by changing |
LeonarddeR
left a comment
There was a problem hiding this comment.
Thanks for taking this
Agreed.
As mentioned in the PR description this affects my add-on for Becky Internet Mail.
Most of the changes in
It should be possible to separate the code which normalizes instances of |
|
Additionally after PR #13271 if the app module developer wants to overwrite one of the list methods which operates on raw indexes they have to shadow both in and out of process variants which should not be necessary. With this PR they can once again overwrite just a raw getter similar to what was possible in 2021.3. |
All the functions changed here are underscored functions, not considered part of our stable, public API. If add-on authors such as yourself need to rely on any of these methods, we should consider making them part of the public API. It's too late to do this in 2022.1, but public functions which mirror required functions could be introduced in 2022.2.
There's no specific concerns, just that this is a risky core change late in the beta period. |
Fix up of #13560, #13271 Summary of the issue: When out-of-process failed, an empty array was returned instead of None. This could have led to incorrect reporting of list items. For example, trying to get the contents of the second column of the list/table/report, the array is initialized with all values of zero, if used without being filled with valid data all columns will report the same thing. #13271 notes: >How likely are cases where injection doesn't work and the outproc variants succeed? I guess this is pretty unlikely, unless we're running under Windows Store. - If injection doesn't work there will be no `helperLocalBindingHandle`, out of process approach will be tried. - If an application like StartIsBack/StartAllBack doesn't handle the Windows Message properly then it doesn't matter if the message is sent in-process or out-of-process. Description of how this pull request fixes the issue: - When possible, use in process approach to get the column order array. It should be possible if there is a `helperLocalBindingHandle` - Don't return an array filled with zeros, return None when out-of-process fails.
Fix up of #13560, #13271 Summary of the issue: When out-of-process failed, an empty array was returned instead of None. This could have led to incorrect reporting of list items. For example, trying to get the contents of the second column of the list/table/report, the array is initialized with all values of zero, if used without being filled with valid data all columns will report the same thing. #13271 notes: >How likely are cases where injection doesn't work and the outproc variants succeed? I guess this is pretty unlikely, unless we're running under Windows Store. - If injection doesn't work there will be no `helperLocalBindingHandle`, out of process approach will be tried. - If an application like StartIsBack/StartAllBack doesn't handle the Windows Message properly then it doesn't matter if the message is sent in-process or out-of-process. Description of how this pull request fixes the issue: - When possible, use in process approach to get the column order array. It should be possible if there is a `helperLocalBindingHandle` - Don't return an array filled with zeros, return None when out-of-process fails.
Opened against beta since this PR fixes regression introduced during 2022.1 development cycle.
Link to issue number:
Fix-up of PR #13271
Summary of the issue:
PR #13271 moved most of the logic for retrieving content in syslistview32 controls in process. As part of this work
_getColumnLocationRawwas changed to return an instance ofctypes.wintypes.RECTrather than one oflocationHelperclasses, additionally the returned coordinates were no longer normalized. Some places in NVDA expects_getColumnLocationRawto return normalized coordinates - in particular this affects the list control in Tween and my add-on for Becky! Internet Mail. The error when trying to navigate the list was as follows:Note that for these controls we cannot just use location returned from
_getColumnLocationsince indexes provided to it are not constant for a given column - they can change for example when user reorders columns.Description of how this pull request fixes the issue:
_getColumnLocationRawTesting strategy:
Known issues with pull request:
None known
Change log entries:
None needed if this is included in 2022.1
Code Review Checklist: