| Summary: | [Browser] Tab traversal gets stuck in Mozilla browser after one cycle | ||||||
|---|---|---|---|---|---|---|---|
| Product: | [Eclipse Project] Platform | Reporter: | Tim Moore <tmm-bugs.eclipse> | ||||
| Component: | SWT | Assignee: | Grant Gayed <grant_gayed> | ||||
| Status: | RESOLVED FIXED | QA Contact: | |||||
| Severity: | normal | ||||||
| Priority: | P3 | ||||||
| Version: | 4.0 | ||||||
| Target Milestone: | 3.8 | ||||||
| Hardware: | PC | ||||||
| OS: | Windows 7 | ||||||
| Whiteboard: | |||||||
| Attachments: |
|
||||||
Created attachment 194600 [details]
Test application
This is fixed in the latest, closing report. |
Build Identifier: M20110210-1200 When traversing using {Tab} out of and then back into the browser, key bindings in the browser become broken - and it isn't possible to continue traversal or back out without taking other action (e.g. changing focus with the mouse). This appears to be a Windows-only issue (possibly because of additional code in MozillaDelegate on Linux?). In org.eclipse.swt.browser.Mozilla.create(Composite parent, int style) a listener is added (L879) which manages the nsIWebBrowserFocus service upon various events. Of interest is the handling of the SWT.Deactivate event (L897...), this causes the nsIWebBrowserFocus service to be deactivated. However, this doesn't work properly when using {Tab} traversal - the listener appears to receive a Deactivate event as intended, but at that moment the Browser is still the focus control - so nothing is done. I'm not sure why it is necessary to filter out Deactivate events that apparently leave the Browser focused (what would the meaning of this be?)? So far we've found that deactivating nsIWebBrowserFocus service on all SWT.Deactivate events for the Browser works fine - so perhaps the simple fix is to remove the guard? Reproducible: Always Steps to Reproduce: Run the test case I will attach on Windows. Traversals will stop happening after traversing out of and into the browser again. This is repeatable whenever a Mozilla browser and any other control is installed - but won't affect Eclipse under typical circumstances as it only occurs on Windows platforms (where IE will be used).