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
Error in Eclipse dialogs #3872
Comments
Comment 2 by jteh on 2014-03-01 03:07 |
Comment 3 by jteh on 2014-03-01 03:11 |
Comment 4 by camlorn on 2014-03-01 05:16
NVDA master does do this as well. If there is value in going back to 2013.3, I will do so. |
Comment 5 by jteh on 2014-03-01 05:49 That control you provided info for is just a standard Edit control. It's probably inside a combo box, but that's a standard Win32 pattern. |
Comment 6 by lpintes (in reply to comment 3) on 2014-03-01 08:46
This appears in any dialog, not only in update, if you are thinking about "software update". |
Comment 7 by camlorn on 2014-03-08 15:42 |
Comment 8 by camlorn on 2014-03-09 21:28 |
Comment 9 by jteh on 2014-03-09 22:28 The question is more how to fix it. The simple answer is not to add EditableText a second time, but this isn't necessarily the right approach. Ideally, we want to use IAccessibleText, which means we we ideally want to get rid of the first instance (in this case, Win32 Edit). However, while it's Edit in this specific case, it could be many other things in other cases. So, the question is how to determine what to get rid of without killing performance. |
Comment 10 by camlorn (in reply to comment 9) on 2014-03-11 01:38
I did not realize this had already been tracked to an MRO problem. I did read your comments. I did not realize you were talking about classes specifically and read it as general terms. The information I found on the exception via Google makes it look like a simple fix-just flip your base classes somewhere and you're done. |
Comment 11 by camlorn on 2014-03-17 21:01 |
Comment 12 by jteh on 2014-03-18 01:22 |
Comment 13 by camlorn on 2014-03-19 01:37
|
Comment 14 by jteh on 2014-03-19 01:59 I don't think the log you just provided is the control in question. If it were, you wouldn't be able to get that log, as NVDA can't actually instantiate the problematic object at all. Note that we can actually hack around this specifically for Eclipse very easily: just remove NVDAObjects.window.edit.Edit from the class list in the Eclipse app module's chooseNVDAObjectOverlayClasses. However, I'd prefer to come up with a more generic solution. Actually, this makes me think we should perhaps just remove any previous editable text implementation when we detect an IAccessible2 or UIA text implementation, the argument being that the latter implementation should (in theory) be better. (Otherwise, why would it have been implemented?) |
Comment 15 by camlorn on 2014-03-21 02:08 |
Comment 16 by jteh on 2014-03-21 08:34 There is no way to use both the IAccessibleText and Edit APIs. You use one or the other. As to the problem of it breaking in rare cases, that can be easily fixed with plugins, whether bundled or external. Having said that, this is the first case of this problem we've ever seen. |
Comment 17 by James Teh <jamie@... on 2014-09-11 05:46
|
Comment 18 by jteh on 2014-09-11 06:19 |
Comment 19 by lpintes (in reply to comment 18) on 2014-09-11 15:03
I tried and I strongly believe it is fixed. Thanks. |
Comment 20 by James Teh <jamie@... on 2014-09-11 23:17
Changes:
|
Comment 21 by jteh on 2014-09-11 23:17 |
Comment 22 by James Teh <jamie@... on 2014-10-08 00:35
Changes:
|
Comment 23 by jteh on 2014-10-08 00:44 |
Reported by lpintes on 2014-02-10 18:55
In Eclipse Kepler, error occurs in many dialogs. This greatly degrades usability. For example, it is not possible to read some edit fields.
Error log
error executing event: gainFocus on <NVDAObjects.Dynamic_DialogIAccessibleWindowNVDAObject object at 0x050ED7F0> with extra args of {}
Traceback (most recent call last):
File "eventHandler.pyc", line 138, in executeEvent
File "eventHandler.pyc", line 86, in init
File "eventHandler.pyc", line 93, in next
File "NVDAObjects__init__.pyc", line 843, in event_gainFocus
File "NVDAObjects__init__.pyc", line 787, in reportFocus
File "speech.pyc", line 320, in speakObject
File "speech.pyc", line 238, in speakObjectProperties
File "baseObject.pyc", line 34, in get
File "baseObject.pyc", line 110, in getPropertyViaCache
File "NVDAObjects\behaviors.pyc", line 133, in get_description
File "NVDAObjects\behaviors.pyc", line 88, in getDialogText
File "NVDAObjects\behaviors.pyc", line 74, in getDialogText
File "baseObject.pyc", line 34, in get
File "baseObject.pyc", line 110, in getPropertyViaCache
File "NVDAObjects\IAccessible__init.pyc", line 1010, in get_children
File "NVDAObjects__init.pyc", line 101, in call
TypeError: Cannot create a consistent method resolution
order (MRO) for bases EditableTextWithAutoSelectDetection, IAccessible, Edit
To reproduce, go to the "Install new software" dialog, press Alt+H, S.
Blocking #3938
The text was updated successfully, but these errors were encountered: