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

Routing navigator object to mouse pointer misbehaves when mouse tracking is disabled #2702

Open
nvaccessAuto opened this issue Oct 7, 2012 · 13 comments

Comments

@nvaccessAuto
Copy link

Reported by Ahiiron on 2012-10-07 22:46
(Reported on behalf of another user.)

Win7 x64

Steps to reproduce:

  1. Launch Firefox.
  2. Make sure Firefox window is maximized.
  3. Move the mouse pointer over any item in Firefox window.
  4. Press "NVDA + Numpad *" to route navigator object to mouse pointer.

Desired result:
NVDA focus should move to where the mouse pointer is. You should be able to navigate the area using review cursor.

Actual result:

Instead, the navigator object is routed to the item behind Firefox window. If its a desktop it would start announcing desktop items, for example.

Notes: Doesn't occur all the time, but enough to be annoying/worth filing.

@nvaccessAuto
Copy link
Author

Comment 1 by jteh on 2012-10-09 22:12
I can't reproduce this. Please provide an example URL and an item over which the mouse should be located to reproduce this. Also, please specify the version of Firefox used.

@nvaccessAuto
Copy link
Author

Comment 2 by ruifontes (in reply to comment 1) on 2012-10-09 23:27
Hi. It also ocurs randmly in IE9 in:
http://www.bpinetempresas.pt

Replying to jteh:

I can't reproduce this. Please provide an example URL and an item over which the mouse should be located to reproduce this. Also, please specify the version of Firefox used.

@nvaccessAuto
Copy link
Author

Comment 3 by jteh on 2012-11-01 02:34
I spoke to the reporter. This happens when mouse tracking is disabled, which makes sense. We don't update the mouse object in this case.

There are a few possible solutions to handle this:

  1. Fetch the mouse object from the current mouse coordinates if mouse tracking is disabled.
  2. Update the mouse object even if mouse tracking is disabled.
  3. Provide a new mouse tracking mode which disables reporting but still tracks the mouse. Don't allow routing to the mouse when mouse tracking is fully disabled.
  4. Just don't allow routing to the mouse when mouse tracking is disabled. However, this doesn't cover the use case of not wanting mouse reporting.
    Changes:
    Changed title from "Routing navigator object to mouse pointer inconsistencies." to "Routing navigator object to mouse pointer misbehaves when mouse tracking is disabled"

@nvaccessAuto
Copy link
Author

Comment 4 by Jarekczek on 2013-08-26 08:42
This bug annoys me too. As a new NVDA user I got completely confused because it was one of the first commands I tried.

May I work on it? May I choose option 2 or does it require additional discussion?

@nvaccessAuto
Copy link
Author

Comment 6 by jteh on 2013-08-27 02:37
After discussing with Mick, we've decided option 1 is the best option.

@nvaccessAuto
Copy link
Author

Comment 7 by Michael Curran <mick@... on 2013-08-27 03:05
In [caf26f6]:

allow setting the navigator object to the current mouse position even when mouse tracking is disabled. Re #2702

Specifically:
- api.getMouseObject: if globalVars.mouseObject is None, then get the mouse object manually with objectFromPoint.
- If enableMousetracking is ever turned off (by GUI or script), set globalVars.mouseObject to None so that getMouseObject knows it should find it manually.

@nvaccessAuto
Copy link
Author

Comment 9 by Jarekczek on 2013-08-27 07:10
Mick, does it work for you? I can observe now strange memory effects. Seems like NVDA+* activates some remembered object (possibly the one moved to with NVDA+/), not the one under the mouse cursor. Testing on branch t2702.

@nvaccessAuto
Copy link
Author

Comment 10 by mdcurran on 2013-08-27 07:32
Works for me here. Are you testing with mouse tracking on or off? give me an example perhaps moving the mouse to somewhere in a common application and tell me what you would expect verses what happens.

@nvaccessAuto
Copy link
Author

Comment 11 by Jarekczek on 2013-08-27 10:52
Let's formalize it then. The testing procedure is as follows:

  1. open notepad
  2. focus edit area
  3. NVDA+- force the navigator object to be the edit area of notepad
  4. NVDA+num8 - go up
  5. NVDA+/ - see the mouse pointer lands in File menu
  6. move mouse pointer to the right side of Edit menu
  7. NVDA+*, NVDA+/ - see the mouse pointer moves to the center of the Edit menu item

This describes the expected behaviour. And indeed, if performed on t2702 after doing "Reset to factory settings" it works that way. Even after switching off the mouse tracking, still good. But not after nvda restart. Although entering mouse settings, doing nothing and pressing ok - makes it working right again.

So to reproduce I suggest that before the procedure is applied, the following operations are performed:

  1. reset to factory settings
  2. switch off mouse tracking
  3. quit NVDA
  4. start NVDA

@nvaccessAuto
Copy link
Author

Comment 12 by Michael Curran <mick@... on 2013-08-28 03:16
In [65258ec]:

Make sure that the mouse object is not accidentially set at start-up if mouse tracking is off. Re #2702
- mouseHandler.executeMouseEvent: fetch oldMouseObject from globalVars.mouseObject rather than api.getMouseObject() as we want to see that its None if it is, rather than it being auto-calculated. Otherwise the first time moving the mouse after turning on mouse tracking, nothing would be announced until the mouse was moved off that object.
- core.main: don't set the mouseObject before initializing mouseHandler. This is no longer needed as NVDA will now cope fine with mouseObject being None as api.getMouseObject will auto-calculate if necessary.
- mouseHandler.initialize: don't set the mouseObject if mouse tracking is off.
- api.getMouseObject(): when auto-calculating by using objectFromPoint, make sure to jump up the parents past any object that has been marked as being transparent to eh mouse. this ensures that the same object is fetched when mouse tracking is off as when it would have been set when it was on.

@nvaccessAuto
Copy link
Author

Comment 13 by Jarekczek on 2013-08-29 06:59
I have an nvda version calling itself source-t2702-65258ec. I am double checking that because after pulling from git I see things got worse. Now the test is not passed, even right after switching mouse tracking on and off again.

It works well only with mouse tracking on. After toggling mouse tracking on and off, it works for one time only.

Thanks for your quick reactions, but I am afraid one more step is needed to make it fully working.

@nvaccessAuto
Copy link
Author

Comment 14 by Jarekczek on 2013-09-02 06:07
Michael, do you plan to finish it next days or should I try to fix it?

@Adriani90
Copy link
Collaborator

@jarekczek do you have an update on this? Have you tried to fix this meanwhile?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants