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

MS Excel (with object model) lags behind when navigating rapidly #14983

Closed
LeonarddeR opened this issue Jun 7, 2023 · 10 comments · Fixed by #14984
Closed

MS Excel (with object model) lags behind when navigating rapidly #14983

LeonarddeR opened this issue Jun 7, 2023 · 10 comments · Fixed by #14984

Comments

@LeonarddeR
Copy link
Collaborator

LeonarddeR commented Jun 7, 2023

Steps to reproduce:

  1. Open MS Excel
  2. With a1 focused, hold right arrow for around a second
  3. Press left arrow

Actual behavior:

NVDA reports R1 before pressing left arrow, but the actual cell is S1. When pressing left arrow, NVDA Reports S1, but the actual cell is R1.

Expected behavior:

NVDA reports s1 before pressing left arrow, the actual cell is S1. When pressing left arrow, NVDA Reports r1, the actual cell is R1.

NVDA logs, crash dumps and other attachments:

IO - speech.speech.speak (09:32:20.408) - MainThread (47288): Speaking ['Log fragment start position marked, press again to copy to clipboard'] IO - braille.BrailleBuffer.update (09:32:20.410) - MainThread (47288): Braille regions text: ['Log fragment start position marked, press again to copy to clipboard'] IO - braille.BrailleHandler.update (09:32:20.410) - MainThread (47288): Braille window dots: 1237 135 1245 - 124 1235 1 1245 134 15 1345 2345 - 234 2345 1 1235 2345 - 1234 135 234 24 2345 24 135 1345 - 134 1 1235 13 15 145 2 - 1234 1235 15 234 IO - inputCore.InputManager.executeGesture (09:32:21.743) - winInputHook (21412): Input: kb(laptop):rightArrow DEBUG - IAccessibleHandler.internalWinEventHandler.winEventCallback (09:32:21.758) - MainThread (47288): Dropping UIA proxied event for Excel7 window. WinEvent: EVENT_OBJECT_SELECTIONREMOVE, window 1510042 (EXCEL7), objectID 735, childID 0, process 1888 (excel), thread 49816 DEBUG - IAccessibleHandler.internalWinEventHandler.winEventCallback (09:32:21.758) - MainThread (47288): Dropping UIA proxied event for Excel7 window. WinEvent: EVENT_OBJECT_SELECTION, window 1510042 (EXCEL7), objectID 736, childID 0, process 1888 (excel), thread 49816 DEBUG - IAccessibleHandler.internalWinEventHandler.winEventCallback (09:32:21.760) - MainThread (47288): Dropping UIA proxied event for Excel7 window. WinEvent: EVENT_OBJECT_FOCUS, window 1510042 (EXCEL7), objectID 737, childID 0, process 1888 (excel), thread 49816 IO - speech.speech.speak (09:32:21.839) - MainThread (47288): Speaking ['B1'] DEBUG - NVDAObjects.NVDAObject._get_placeholder (09:32:21.839) - MainThread (47288): Potential unimplemented child class: IO - braille.BrailleBuffer.update (09:32:21.840) - MainThread (47288): Braille regions text: ['Book1 - Excel ', 'Sheet1 tbl ', 'B1'] IO - braille.BrailleHandler.update (09:32:21.840) - MainThread (47288): Braille window dots: 127 16 IO - inputCore.InputManager.executeGesture (09:32:22.001) - winInputHook (21412): Input: kb(laptop):rightArrow DEBUG - IAccessibleHandler.internalWinEventHandler.winEventCallback (09:32:22.024) - MainThread (47288): Dropping UIA proxied event for Excel7 window. WinEvent: EVENT_OBJECT_SELECTIONREMOVE, window 1510042 (EXCEL7), objectID 738, childID 0, process 1888 (excel), thread 49816 DEBUG - IAccessibleHandler.internalWinEventHandler.winEventCallback (09:32:22.026) - MainThread (47288): Dropping UIA proxied event for Excel7 window. WinEvent: EVENT_OBJECT_SELECTION, window 1510042 (EXCEL7), objectID 739, childID 0, process 1888 (excel), thread 49816 DEBUG - IAccessibleHandler.internalWinEventHandler.winEventCallback (09:32:22.028) - MainThread (47288): Dropping UIA proxied event for Excel7 window. WinEvent: EVENT_OBJECT_FOCUS, window 1510042 (EXCEL7), objectID 740, childID 0, process 1888 (excel), thread 49816 IO - inputCore.InputManager.executeGesture (09:32:22.030) - winInputHook (21412): Input: kb(laptop):rightArrow IO - inputCore.InputManager.executeGesture (09:32:22.061) - winInputHook (21412): Input: kb(laptop):rightArrow IO - inputCore.InputManager.executeGesture (09:32:22.109) - winInputHook (21412): Input: kb(laptop):rightArrow DEBUG - IAccessibleHandler.internalWinEventHandler.winEventCallback (09:32:22.119) - MainThread (47288): Dropping UIA proxied event for Excel7 window. WinEvent: EVENT_OBJECT_SELECTIONREMOVE, window 1510042 (EXCEL7), objectID 741, childID 0, process 1888 (excel), thread 49816 DEBUG - IAccessibleHandler.internalWinEventHandler.winEventCallback (09:32:22.119) - MainThread (47288): Dropping UIA proxied event for Excel7 window. WinEvent: EVENT_OBJECT_SELECTION, window 1510042 (EXCEL7), objectID 742, childID 0, process 1888 (excel), thread 49816 DEBUG - IAccessibleHandler.internalWinEventHandler.winEventCallback (09:32:22.121) - MainThread (47288): Dropping UIA proxied event for Excel7 window. WinEvent: EVENT_OBJECT_FOCUS, window 1510042 (EXCEL7), objectID 743, childID 0, process 1888 (excel), thread 49816 DEBUG - IAccessibleHandler.internalWinEventHandler.winEventCallback (09:32:22.132) - MainThread (47288): Dropping UIA proxied event for Excel7 window. WinEvent: EVENT_OBJECT_SELECTIONREMOVE, window 1510042 (EXCEL7), objectID 744, childID 0, process 1888 (excel), thread 49816 DEBUG - IAccessibleHandler.internalWinEventHandler.winEventCallback (09:32:22.132) - MainThread (47288): Dropping UIA proxied event for Excel7 window. WinEvent: EVENT_OBJECT_SELECTION, window 1510042 (EXCEL7), objectID 745, childID 0, process 1888 (excel), thread 49816 DEBUG - IAccessibleHandler.internalWinEventHandler.winEventCallback (09:32:22.134) - MainThread (47288): Dropping UIA proxied event for Excel7 window. WinEvent: EVENT_OBJECT_FOCUS, window 1510042 (EXCEL7), objectID 746, childID 0, process 1888 (excel), thread 49816 IO - inputCore.InputManager.executeGesture (09:32:22.138) - winInputHook (21412): Input: kb(laptop):rightArrow DEBUG - IAccessibleHandler.internalWinEventHandler.winEventCallback (09:32:22.146) - MainThread (47288): Dropping UIA proxied event for Excel7 window. WinEvent: EVENT_OBJECT_SELECTIONREMOVE, window 1510042 (EXCEL7), objectID 747, childID 0, process 1888 (excel), thread 49816 DEBUG - IAccessibleHandler.internalWinEventHandler.winEventCallback (09:32:22.147) - MainThread (47288): Dropping UIA proxied event for Excel7 window. WinEvent: EVENT_OBJECT_SELECTION, window 1510042 (EXCEL7), objectID 748, childID 0, process 1888 (excel), thread 49816 DEBUG - IAccessibleHandler.internalWinEventHandler.winEventCallback (09:32:22.148) - MainThread (47288): Dropping UIA proxied event for Excel7 window. WinEvent: EVENT_OBJECT_FOCUS, window 1510042 (EXCEL7), objectID 749, childID 0, process 1888 (excel), thread 49816 IO - inputCore.InputManager.executeGesture (09:32:22.168) - winInputHook (21412): Input: kb(laptop):rightArrow IO - speech.speech.speak (09:32:22.184) - MainThread (47288): Speaking ['D1'] DEBUG - NVDAObjects.NVDAObject._get_placeholder (09:32:22.185) - MainThread (47288): Potential unimplemented child class: IO - braille.BrailleBuffer.update (09:32:22.185) - MainThread (47288): Braille regions text: ['Book1 - Excel ', 'Sheet1 tbl ', 'D1'] IO - braille.BrailleHandler.update (09:32:22.186) - MainThread (47288): Braille window dots: 1457 16 IO - inputCore.InputManager.executeGesture (09:32:22.201) - winInputHook (21412): Input: kb(laptop):rightArrow DEBUG - IAccessibleHandler.internalWinEventHandler.winEventCallback (09:32:22.201) - MainThread (47288): Dropping UIA proxied event for Excel7 window. WinEvent: EVENT_OBJECT_SELECTIONREMOVE, window 1510042 (EXCEL7), objectID 750, childID 0, process 1888 (excel), thread 49816 DEBUG - IAccessibleHandler.internalWinEventHandler.winEventCallback (09:32:22.202) - MainThread (47288): Dropping UIA proxied event for Excel7 window. WinEvent: EVENT_OBJECT_SELECTION, window 1510042 (EXCEL7), objectID 751, childID 0, process 1888 (excel), thread 49816 DEBUG - IAccessibleHandler.internalWinEventHandler.winEventCallback (09:32:22.204) - MainThread (47288): Dropping UIA proxied event for Excel7 window. WinEvent: EVENT_OBJECT_FOCUS, window 1510042 (EXCEL7), objectID 752, childID 0, process 1888 (excel), thread 49816 DEBUG - IAccessibleHandler.internalWinEventHandler.winEventCallback (09:32:22.218) - MainThread (47288): Dropping UIA proxied event for Excel7 window. WinEvent: EVENT_OBJECT_SELECTIONREMOVE, window 1510042 (EXCEL7), objectID 753, childID 0, process 1888 (excel), thread 49816 DEBUG - IAccessibleHandler.internalWinEventHandler.winEventCallback (09:32:22.219) - MainThread (47288): Dropping UIA proxied event for Excel7 window. WinEvent: EVENT_OBJECT_SELECTION, window 1510042 (EXCEL7), objectID 754, childID 0, process 1888 (excel), thread 49816 DEBUG - IAccessibleHandler.internalWinEventHandler.winEventCallback (09:32:22.221) - MainThread (47288): Dropping UIA proxied event for Excel7 window. WinEvent: EVENT_OBJECT_FOCUS, window 1510042 (EXCEL7), objectID 755, childID 0, process 1888 (excel), thread 49816 IO - inputCore.InputManager.executeGesture (09:32:22.231) - winInputHook (21412): Input: kb(laptop):rightArrow IO - inputCore.InputManager.executeGesture (09:32:22.262) - winInputHook (21412): Input: kb(laptop):rightArrow IO - speech.speech.speak (09:32:22.273) - MainThread (47288): Speaking ['F1'] DEBUG - NVDAObjects.NVDAObject._get_placeholder (09:32:22.274) - MainThread (47288): Potential unimplemented child class: IO - braille.BrailleBuffer.update (09:32:22.274) - MainThread (47288): Braille regions text: ['Book1 - Excel ', 'Sheet1 tbl ', 'F1'] IO - braille.BrailleHandler.update (09:32:22.275) - MainThread (47288): Braille window dots: 1247 16 DEBUG - IAccessibleHandler.internalWinEventHandler.winEventCallback (09:32:22.292) - MainThread (47288): Dropping UIA proxied event for Excel7 window. WinEvent: EVENT_OBJECT_SELECTIONREMOVE, window 1510042 (EXCEL7), objectID 756, childID 0, process 1888 (excel), thread 49816 DEBUG - IAccessibleHandler.internalWinEventHandler.winEventCallback (09:32:22.293) - MainThread (47288): Dropping UIA proxied event for Excel7 window. WinEvent: EVENT_OBJECT_SELECTION, window 1510042 (EXCEL7), objectID 757, childID 0, process 1888 (excel), thread 49816 IO - inputCore.InputManager.executeGesture (09:32:22.294) - winInputHook (21412): Input: kb(laptop):rightArrow DEBUG - IAccessibleHandler.internalWinEventHandler.winEventCallback (09:32:22.296) - MainThread (47288): Dropping UIA proxied event for Excel7 window. WinEvent: EVENT_OBJECT_FOCUS, window 1510042 (EXCEL7), objectID 758, childID 0, process 1888 (excel), thread 49816 DEBUG - IAccessibleHandler.internalWinEventHandler.winEventCallback (09:32:22.310) - MainThread (47288): Dropping UIA proxied event for Excel7 window. WinEvent: EVENT_OBJECT_SELECTIONREMOVE, window 1510042 (EXCEL7), objectID 759, childID 0, process 1888 (excel), thread 49816 DEBUG - IAccessibleHandler.internalWinEventHandler.winEventCallback (09:32:22.311) - MainThread (47288): Dropping UIA proxied event for Excel7 window. WinEvent: EVENT_OBJECT_SELECTION, window 1510042 (EXCEL7), objectID 760, childID 0, process 1888 (excel), thread 49816 DEBUG - IAccessibleHandler.internalWinEventHandler.winEventCallback (09:32:22.313) - MainThread (47288): Dropping UIA proxied event for Excel7 window. WinEvent: EVENT_OBJECT_FOCUS, window 1510042 (EXCEL7), objectID 761, childID 0, process 1888 (excel), thread 49816 IO - inputCore.InputManager.executeGesture (09:32:22.324) - winInputHook (21412): Input: kb(laptop):rightArrow DEBUG - IAccessibleHandler.internalWinEventHandler.winEventCallback (09:32:22.331) - MainThread (47288): Dropping UIA proxied event for Excel7 window. WinEvent: EVENT_OBJECT_SELECTIONREMOVE, window 1510042 (EXCEL7), objectID 762, childID 0, process 1888 (excel), thread 49816 DEBUG - IAccessibleHandler.internalWinEventHandler.winEventCallback (09:32:22.332) - MainThread (47288): Dropping UIA proxied event for Excel7 window. WinEvent: EVENT_OBJECT_SELECTION, window 1510042 (EXCEL7), objectID 763, childID 0, process 1888 (excel), thread 49816 DEBUG - IAccessibleHandler.internalWinEventHandler.winEventCallback (09:32:22.334) - MainThread (47288): Dropping UIA proxied event for Excel7 window. WinEvent: EVENT_OBJECT_FOCUS, window 1510042 (EXCEL7), objectID 764, childID 0, process 1888 (excel), thread 49816 IO - inputCore.InputManager.executeGesture (09:32:22.369) - winInputHook (21412): Input: kb(laptop):rightArrow IO - speech.speech.speak (09:32:22.381) - MainThread (47288): Speaking ['I1'] DEBUG - NVDAObjects.NVDAObject._get_placeholder (09:32:22.382) - MainThread (47288): Potential unimplemented child class: IO - braille.BrailleBuffer.update (09:32:22.382) - MainThread (47288): Braille regions text: ['Book1 - Excel ', 'Sheet1 tbl ', 'I1'] IO - braille.BrailleHandler.update (09:32:22.382) - MainThread (47288): Braille window dots: 247 16 DEBUG - IAccessibleHandler.internalWinEventHandler.winEventCallback (09:32:22.396) - MainThread (47288): Dropping UIA proxied event for Excel7 window. WinEvent: EVENT_OBJECT_SELECTIONREMOVE, window 1510042 (EXCEL7), objectID 765, childID 0, process 1888 (excel), thread 49816 DEBUG - IAccessibleHandler.internalWinEventHandler.winEventCallback (09:32:22.397) - MainThread (47288): Dropping UIA proxied event for Excel7 window. WinEvent: EVENT_OBJECT_SELECTION, window 1510042 (EXCEL7), objectID 766, childID 0, process 1888 (excel), thread 49816 DEBUG - IAccessibleHandler.internalWinEventHandler.winEventCallback (09:32:22.398) - MainThread (47288): Dropping UIA proxied event for Excel7 window. WinEvent: EVENT_OBJECT_FOCUS, window 1510042 (EXCEL7), objectID 767, childID 0, process 1888 (excel), thread 49816 IO - inputCore.InputManager.executeGesture (09:32:22.402) - winInputHook (21412): Input: kb(laptop):rightArrow DEBUG - IAccessibleHandler.internalWinEventHandler.winEventCallback (09:32:22.413) - MainThread (47288): Dropping UIA proxied event for Excel7 window. WinEvent: EVENT_OBJECT_SELECTIONREMOVE, window 1510042 (EXCEL7), objectID 768, childID 0, process 1888 (excel), thread 49816 DEBUG - IAccessibleHandler.internalWinEventHandler.winEventCallback (09:32:22.414) - MainThread (47288): Dropping UIA proxied event for Excel7 window. WinEvent: EVENT_OBJECT_SELECTION, window 1510042 (EXCEL7), objectID 769, childID 0, process 1888 (excel), thread 49816 DEBUG - IAccessibleHandler.internalWinEventHandler.winEventCallback (09:32:22.415) - MainThread (47288): Dropping UIA proxied event for Excel7 window. WinEvent: EVENT_OBJECT_FOCUS, window 1510042 (EXCEL7), objectID 770, childID 0, process 1888 (excel), thread 49816 DEBUG - IAccessibleHandler.internalWinEventHandler.winEventCallback (09:32:22.426) - MainThread (47288): Dropping UIA proxied event for Excel7 window. WinEvent: EVENT_OBJECT_SELECTIONREMOVE, window 1510042 (EXCEL7), objectID 771, childID 0, process 1888 (excel), thread 49816 DEBUG - IAccessibleHandler.internalWinEventHandler.winEventCallback (09:32:22.427) - MainThread (47288): Dropping UIA proxied event for Excel7 window. WinEvent: EVENT_OBJECT_SELECTION, window 1510042 (EXCEL7), objectID 772, childID 0, process 1888 (excel), thread 49816 DEBUG - IAccessibleHandler.internalWinEventHandler.winEventCallback (09:32:22.428) - MainThread (47288): Dropping UIA proxied event for Excel7 window. WinEvent: EVENT_OBJECT_FOCUS, window 1510042 (EXCEL7), objectID 773, childID 0, process 1888 (excel), thread 49816 IO - inputCore.InputManager.executeGesture (09:32:22.432) - winInputHook (21412): Input: kb(laptop):rightArrow IO - speech.speech.speak (09:32:22.461) - MainThread (47288): Speaking ['L1'] DEBUG - NVDAObjects.NVDAObject._get_placeholder (09:32:22.462) - MainThread (47288): Potential unimplemented child class: IO - braille.BrailleBuffer.update (09:32:22.462) - MainThread (47288): Braille regions text: ['Book1 - Excel ', 'Sheet1 tbl ', 'L1'] IO - braille.BrailleHandler.update (09:32:22.462) - MainThread (47288): Braille window dots: 1237 16 IO - inputCore.InputManager.executeGesture (09:32:22.463) - winInputHook (21412): Input: kb(laptop):rightArrow DEBUG - IAccessibleHandler.internalWinEventHandler.winEventCallback (09:32:22.473) - MainThread (47288): Dropping UIA proxied event for Excel7 window. WinEvent: EVENT_OBJECT_SELECTIONREMOVE, window 1510042 (EXCEL7), objectID 774, childID 0, process 1888 (excel), thread 49816 DEBUG - IAccessibleHandler.internalWinEventHandler.winEventCallback (09:32:22.474) - MainThread (47288): Dropping UIA proxied event for Excel7 window. WinEvent: EVENT_OBJECT_SELECTION, window 1510042 (EXCEL7), objectID 775, childID 0, process 1888 (excel), thread 49816 DEBUG - IAccessibleHandler.internalWinEventHandler.winEventCallback (09:32:22.475) - MainThread (47288): Dropping UIA proxied event for Excel7 window. WinEvent: EVENT_OBJECT_FOCUS, window 1510042 (EXCEL7), objectID 776, childID 0, process 1888 (excel), thread 49816 DEBUG - IAccessibleHandler.internalWinEventHandler.winEventCallback (09:32:22.485) - MainThread (47288): Dropping UIA proxied event for Excel7 window. WinEvent: EVENT_OBJECT_SELECTIONREMOVE, window 1510042 (EXCEL7), objectID 777, childID 0, process 1888 (excel), thread 49816 DEBUG - IAccessibleHandler.internalWinEventHandler.winEventCallback (09:32:22.486) - MainThread (47288): Dropping UIA proxied event for Excel7 window. WinEvent: EVENT_OBJECT_SELECTION, window 1510042 (EXCEL7), objectID 778, childID 0, process 1888 (excel), thread 49816 DEBUG - IAccessibleHandler.internalWinEventHandler.winEventCallback (09:32:22.487) - MainThread (47288): Dropping UIA proxied event for Excel7 window. WinEvent: EVENT_OBJECT_FOCUS, window 1510042 (EXCEL7), objectID 779, childID 0, process 1888 (excel), thread 49816 DEBUG - IAccessibleHandler.internalWinEventHandler.winEventCallback (09:32:22.497) - MainThread (47288): Dropping UIA proxied event for Excel7 window. WinEvent: EVENT_OBJECT_SELECTIONREMOVE, window 1510042 (EXCEL7), objectID 780, childID 0, process 1888 (excel), thread 49816 DEBUG - IAccessibleHandler.internalWinEventHandler.winEventCallback (09:32:22.498) - MainThread (47288): Dropping UIA proxied event for Excel7 window. WinEvent: EVENT_OBJECT_SELECTION, window 1510042 (EXCEL7), objectID 781, childID 0, process 1888 (excel), thread 49816 DEBUG - IAccessibleHandler.internalWinEventHandler.winEventCallback (09:32:22.499) - MainThread (47288): Dropping UIA proxied event for Excel7 window. WinEvent: EVENT_OBJECT_FOCUS, window 1510042 (EXCEL7), objectID 782, childID 0, process 1888 (excel), thread 49816 IO - speech.speech.speak (09:32:22.535) - MainThread (47288): Speaking ['O1'] DEBUG - NVDAObjects.NVDAObject._get_placeholder (09:32:22.535) - MainThread (47288): Potential unimplemented child class: IO - braille.BrailleBuffer.update (09:32:22.536) - MainThread (47288): Braille regions text: ['Book1 - Excel ', 'Sheet1 tbl ', 'O1'] IO - braille.BrailleHandler.update (09:32:22.536) - MainThread (47288): Braille window dots: 1357 16 IO - inputCore.InputManager.executeGesture (09:32:24.593) - winInputHook (21412): Input: kb(laptop):leftArrow DEBUG - IAccessibleHandler.internalWinEventHandler.winEventCallback (09:32:24.624) - MainThread (47288): Dropping UIA proxied event for Excel7 window. WinEvent: EVENT_OBJECT_SELECTION, window 1510042 (EXCEL7), objectID 783, childID 0, process 1888 (excel), thread 49816 DEBUG - IAccessibleHandler.internalWinEventHandler.winEventCallback (09:32:24.625) - MainThread (47288): Dropping UIA proxied event for Excel7 window. WinEvent: EVENT_OBJECT_SELECTIONREMOVE, window 1510042 (EXCEL7), objectID 784, childID 0, process 1888 (excel), thread 49816 DEBUG - IAccessibleHandler.internalWinEventHandler.winEventCallback (09:32:24.626) - MainThread (47288): Dropping UIA proxied event for Excel7 window. WinEvent: EVENT_OBJECT_FOCUS, window 1510042 (EXCEL7), objectID 785, childID 0, process 1888 (excel), thread 49816 IO - speech.speech.speak (09:32:24.668) - MainThread (47288): Speaking ['Q1'] DEBUG - NVDAObjects.NVDAObject._get_placeholder (09:32:24.669) - MainThread (47288): Potential unimplemented child class: IO - braille.BrailleBuffer.update (09:32:24.669) - MainThread (47288): Braille regions text: ['Book1 - Excel ', 'Sheet1 tbl ', 'Q1'] IO - braille.BrailleHandler.update (09:32:24.669) - MainThread (47288): Braille window dots: 123457 16 IO - inputCore.InputManager.executeGesture (09:32:26.463) - winInputHook (21412): Input: kb(laptop):rightArrow DEBUG - IAccessibleHandler.internalWinEventHandler.winEventCallback (09:32:26.493) - MainThread (47288): Dropping UIA proxied event for Excel7 window. WinEvent: EVENT_OBJECT_SELECTIONREMOVE, window 1510042 (EXCEL7), objectID 786, childID 0, process 1888 (excel), thread 49816 DEBUG - IAccessibleHandler.internalWinEventHandler.winEventCallback (09:32:26.494) - MainThread (47288): Dropping UIA proxied event for Excel7 window. WinEvent: EVENT_OBJECT_SELECTION, window 1510042 (EXCEL7), objectID 787, childID 0, process 1888 (excel), thread 49816 DEBUG - IAccessibleHandler.internalWinEventHandler.winEventCallback (09:32:26.495) - MainThread (47288): Dropping UIA proxied event for Excel7 window. WinEvent: EVENT_OBJECT_FOCUS, window 1510042 (EXCEL7), objectID 788, childID 0, process 1888 (excel), thread 49816 IO - speech.speech.speak (09:32:26.548) - MainThread (47288): Speaking ['P1'] DEBUG - NVDAObjects.NVDAObject._get_placeholder (09:32:26.548) - MainThread (47288): Potential unimplemented child class: IO - braille.BrailleBuffer.update (09:32:26.549) - MainThread (47288): Braille regions text: ['Book1 - Excel ', 'Sheet1 tbl ', 'P1'] IO - braille.BrailleHandler.update (09:32:26.549) - MainThread (47288): Braille window dots: 12347 16 IO - inputCore.InputManager.executeGesture (09:32:28.181) - winInputHook (21412): Input: kb(laptop):leftArrow DEBUG - IAccessibleHandler.internalWinEventHandler.winEventCallback (09:32:28.216) - MainThread (47288): Dropping UIA proxied event for Excel7 window. WinEvent: EVENT_OBJECT_SELECTION, window 1510042 (EXCEL7), objectID 789, childID 0, process 1888 (excel), thread 49816 DEBUG - IAccessibleHandler.internalWinEventHandler.winEventCallback (09:32:28.217) - MainThread (47288): Dropping UIA proxied event for Excel7 window. WinEvent: EVENT_OBJECT_SELECTIONREMOVE, window 1510042 (EXCEL7), objectID 790, childID 0, process 1888 (excel), thread 49816 DEBUG - IAccessibleHandler.internalWinEventHandler.winEventCallback (09:32:28.219) - MainThread (47288): Dropping UIA proxied event for Excel7 window. WinEvent: EVENT_OBJECT_FOCUS, window 1510042 (EXCEL7), objectID 791, childID 0, process 1888 (excel), thread 49816 IO - speech.speech.speak (09:32:28.267) - MainThread (47288): Speaking ['Q1'] DEBUG - NVDAObjects.NVDAObject._get_placeholder (09:32:28.268) - MainThread (47288): Potential unimplemented child class: IO - braille.BrailleBuffer.update (09:32:28.268) - MainThread (47288): Braille regions text: ['Book1 - Excel ', 'Sheet1 tbl ', 'Q1'] IO - braille.BrailleHandler.update (09:32:28.268) - MainThread (47288): Braille window dots: 123457 16 IO - inputCore.InputManager.executeGesture (09:32:29.923) - winInputHook (21412): Input: kb(laptop):rightArrow DEBUG - IAccessibleHandler.internalWinEventHandler.winEventCallback (09:32:29.943) - MainThread (47288): Dropping UIA proxied event for Excel7 window. WinEvent: EVENT_OBJECT_SELECTIONREMOVE, window 1510042 (EXCEL7), objectID 792, childID 0, process 1888 (excel), thread 49816 DEBUG - IAccessibleHandler.internalWinEventHandler.winEventCallback (09:32:29.943) - MainThread (47288): Dropping UIA proxied event for Excel7 window. WinEvent: EVENT_OBJECT_SELECTION, window 1510042 (EXCEL7), objectID 793, childID 0, process 1888 (excel), thread 49816 DEBUG - IAccessibleHandler.internalWinEventHandler.winEventCallback (09:32:29.945) - MainThread (47288): Dropping UIA proxied event for Excel7 window. WinEvent: EVENT_OBJECT_FOCUS, window 1510042 (EXCEL7), objectID 794, childID 0, process 1888 (excel), thread 49816 IO - speech.speech.speak (09:32:29.986) - MainThread (47288): Speaking ['P1'] DEBUG - NVDAObjects.NVDAObject._get_placeholder (09:32:29.987) - MainThread (47288): Potential unimplemented child class: IO - braille.BrailleBuffer.update (09:32:29.987) - MainThread (47288): Braille regions text: ['Book1 - Excel ', 'Sheet1 tbl ', 'P1'] IO - braille.BrailleHandler.update (09:32:29.988) - MainThread (47288): Braille window dots: 12347 16 IO - inputCore.InputManager.executeGesture (09:32:31.696) - winInputHook (21412): Input: kb(laptop):leftArrow DEBUG - IAccessibleHandler.internalWinEventHandler.winEventCallback (09:32:31.734) - MainThread (47288): Dropping UIA proxied event for Excel7 window. WinEvent: EVENT_OBJECT_SELECTION, window 1510042 (EXCEL7), objectID 795, childID 0, process 1888 (excel), thread 49816 DEBUG - IAccessibleHandler.internalWinEventHandler.winEventCallback (09:32:31.735) - MainThread (47288): Dropping UIA proxied event for Excel7 window. WinEvent: EVENT_OBJECT_SELECTIONREMOVE, window 1510042 (EXCEL7), objectID 796, childID 0, process 1888 (excel), thread 49816 DEBUG - IAccessibleHandler.internalWinEventHandler.winEventCallback (09:32:31.736) - MainThread (47288): Dropping UIA proxied event for Excel7 window. WinEvent: EVENT_OBJECT_FOCUS, window 1510042 (EXCEL7), objectID 797, childID 0, process 1888 (excel), thread 49816 IO - speech.speech.speak (09:32:31.782) - MainThread (47288): Speaking ['Q1'] DEBUG - NVDAObjects.NVDAObject._get_placeholder (09:32:31.782) - MainThread (47288): Potential unimplemented child class: IO - braille.BrailleBuffer.update (09:32:31.782) - MainThread (47288): Braille regions text: ['Book1 - Excel ', 'Sheet1 tbl ', 'Q1'] IO - braille.BrailleHandler.update (09:32:31.783) - MainThread (47288): Braille window dots: 123457 16 IO - inputCore.InputManager.executeGesture (09:32:32.699) - winInputHook (21412): Input: kb(laptop):control+shift+NVDA+f1

System configuration

NVDA installed/portable/running from source:

Installed

NVDA version:

alpha-28376,444b5688

Windows version:

Windows 11 22H2 (OS Build 22621.1702)

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

Excel 365 16.0.16501.20196

Other questions

Does the issue still occur after restarting your computer?

Yes

Have you tried any other versions of NVDA? If so, please report their behaviors.

Yes. In NVDA 2023.1 and below, NVDA sometimes reports the wrong cell when holding right arrow (str1), but the next movement is always reported correctly.

If NVDA add-ons are disabled, is your problem still occurring?

Yes

Does the issue still occur after you run the COM Registration Fixing Tool in NVDA's tools menu?

Yes

@LeonarddeR
Copy link
Collaborator Author

I've been able to pinpoint this to commit e8bf6c2 , pr #14708
@jcsteh I'm sorry to blame you about this one. I'll certainly investigate this but if you have any thoughts about what may cause this, I'd be very happy to know as this is a real pain for me sometimes.

@LeonarddeR
Copy link
Collaborator Author

LeonarddeR commented Jun 7, 2023

After first quick research, reverting the change in keyboardHandler fixed this: From #14708:

If this does turn out to be a problem, we could watch for the last injected key in the keyboard event hook and fire a Windows event when it arrives. This will be faster to wake than a 10-16 ms sleep.

Looks to me that this might be the way to go?

@jcsteh
Copy link
Contributor

jcsteh commented Jun 7, 2023

I trust your regression hunting, but that's a bizarre manifestation of the problem. I can't follow why pressing left arrow would end up sending right arrow... or something?

Does this commit fix it? jcsteh@91620fb

@LeonarddeR
Copy link
Collaborator Author

I trust your regression hunting, but that's a bizarre manifestation of the problem. I can't follow why pressing left arrow would end up sending right arrow... or something?

It's not that bizarre actually. When using the object model, there are NVDA scripts bound to the arrow keys that do gesture.send and then report the newly focused cell. However it looks like in this case, gesture.send returns before Excel has processed the injected keys and therefore NVDA reports the cell that was focused last, since it has strictly spoken still the focus when reporting it.

Does this commit fix it? jcsteh@91620fb

Unfortunately, it doesn't.

@jcsteh
Copy link
Contributor

jcsteh commented Jun 7, 2023

Does the Excel code wait for any kind of change or does it just assume the change happens as soon as the gesture gets sent? The latter feels wrong even despite the keyboardHandler change. There's no guarantee that Excel actually processed the change yet. That's why we have all the caret check stuff for text boxes.

@jcsteh
Copy link
Contributor

jcsteh commented Jun 7, 2023

To put that another way, maybe we should put a time.sleep in the Excel scripts.

@LeonarddeR
Copy link
Collaborator Author

Does the Excel code wait for any kind of change or does it just assume the change happens as soon as the gesture gets sent?

Nope, it does not. So makes sense to me to come with a fix in that direction. Reintroducing the time.sleep will probably fix this, but it is more of a workaround than a real fix.

@LeonarddeR
Copy link
Collaborator Author

Actually I was wrong, it does check for changes but it doesn't really work as expected. I will dive into it later this week.

@jcsteh
Copy link
Contributor

jcsteh commented Jun 7, 2023

Also, if the delay is needed, I don't get why it wouldn't be failing constantly. In your case, it only seems to fail after holding down a key for a while. Why would Excel be slower after you release the held key and then press another one?

@LeonarddeR
Copy link
Collaborator Author

The code was using the focus object to cache the old selection, so if the focus object was one cell behind, the logic would always find out a new selection since the old selection it used was wrong. So it looks like the keyboardHandler sleep you removed was obfuscating a bug we can now fix properly.

michaelDCurran pushed a commit that referenced this issue Jun 7, 2023
Fixes #14983
Fixes #12200
Fixes #12108?

Summary of the issue:
Moving rapidly in Excel can result in lagging one cell behind when reporting focus.

Description of user facing changes
Rapid movement in Excel will now always report the last cell.

Description of development approach
First and foremost, NVDA was relying on the current focus object to cache the current selection in Excel rather than getting the current selection before executing the gesture. This resulted in the one behind behavior. There was logic to check for selection changes, but it detected a change based on the wrong old selection.
I also revamped the logic a bit based on #14708, i.e. perform three attempts before doing a time.sleep.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants