Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.
Bug 344599 - [Browser] Tab traversal gets stuck in Mozilla browser after one cycle
Summary: [Browser] Tab traversal gets stuck in Mozilla browser after one cycle
Status: RESOLVED FIXED
Alias: None
Product: Platform
Classification: Eclipse Project
Component: SWT (show other bugs)
Version: 4.0   Edit
Hardware: PC Windows 7
: P3 normal (vote)
Target Milestone: 3.8   Edit
Assignee: Grant Gayed CLA
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2011-05-03 11:27 EDT by Tim Moore CLA
Modified: 2012-04-05 10:40 EDT (History)
0 users

See Also:


Attachments
Test application (1.54 KB, text/plain)
2011-05-03 11:28 EDT, Tim Moore CLA
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
Description Tim Moore CLA 2011-05-03 11:27:45 EDT
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).
Comment 1 Tim Moore CLA 2011-05-03 11:28:36 EDT
Created attachment 194600 [details]
Test application
Comment 2 Grant Gayed CLA 2012-04-05 10:40:40 EDT
This is fixed in the latest, closing report.