Community
Participate
Working Groups
With IE9 and Eclipse 3.7, I am unable to use keyboard navigation for some pages (i.e. arrows or pg up and pg down). This works on some pages, but used to work on all with IE 8 and Eclipse 3.6. Example page: http://article.wn.com/view/2011/04/06/Tasktop_Technologies_Named_Best_Employer_by_Small_Business_B/
Martin or others, any thoughts on this problem?
Setting as major, since this makes for a pretty big regression in the Browser widget functionality.
Some investigation based on using the widget (not at the code level) indicates that this could be a race condition of some sort. We suspect this as there are some cases where the keybindings will work on the page, but it seems to be due to when the page is cached vs when the page slow to load from the site. It seemed that sometimes an Eclipse restart could fix this issue temporarily as well, but upon reloading one of these pages in a new browser widget, the ability to navigate would be lost again. Navigating to a different page within the same widget would allow the user to use the keyboard navigation for that page, but it would not work upon returning to the page where it was broken.
On interesting bit of information that we stumbled upon is that sometimes the internal browser reports that it is IE 7 (to websites) and other times it reports that it is IE 9. When it reports that it is IE 9, this is when sites like the one above do not work. It seems that compatibility mode (which is normally used by the internal browser) isn't always correctly turned on. One way that some people were able to get it to switch was to navigate to the page via google vs navigating directly to the page.
Prior to Eclipse 3.7 the IE-based browser always ran in IE8 (or earlier) emulation mode. This wasn't a conscious decision of SWT, but a default behaviour imposed by the embedded IE control. However as of Eclipse 3.7 the Browser began overriding this default behaviour so that newer IE versions could show through, and this is likely the scenario where the behaviour has regressed, when the embedded IE is not emulating an older version. I'll try to investigate this tomorrow (I have to use a different machine to investigate IE9 issues, and it's not yet set up with a clone of our GIT repo, etc.). This is not a fix that would make it into 3.7.1, as its cut-off for functional changes like this passed a while ago.
Interesting. It would be good to have new IE versions shine through to ensure that all web pages work as expected, but would be interesting to know why this fails on IE 9 and what would cause the rendering engine to change depending on the page that you access. Since we are already past the cutoff for SR1, can this fix get into 3.7.2?
Fixed in HEAD > 20110922. Patch: http://git.eclipse.org/c/platform/eclipse.platform.swt.git/commit/?id=b3289ecfc47e79e340ac862d8d53734bd3c6d2dd . Target set for 3.7.2, will commit the fix to that stream once it has had some time to be tested in the 3.8/4.2 streams. Keeping report open in the meantime. As a side note, it is possible to make the browser revert to using IE7 emulation mode (I wrote the wrong version in comment 5, the native control defaults to IE7 not IE8). This can be done by launching with vm switch -Dorg.eclipse.swt.browser.IEVersion=7000, or by setting the equivalent Java property+value before the first Browser instance is created.
Thanks Grant, great to see this fixed.
Thanks Grant! Is this vm option available in 3.7 (i.e. can we get users to set this if they are having difficulty and set this as a default option in an RCP build)?
Yes it's in 3.7.
Bug 349478 and bug 291483 reported similar problems before.
*** Bug 349478 has been marked as a duplicate of this bug. ***
Fix committed to the R3_7_maintenance stream > 20111021 ( http://git.eclipse.org/c/platform/eclipse.platform.swt.git/commit/?h=R3_7_maintenance&id=f32dd164a74a61d4604211d7305a48ded07cbcce ).
*** Bug 367675 has been marked as a duplicate of this bug. ***
The fix is "Eclipse Platform" specific or "SWT" specific? Does an update to the latest SWT release solve the problem?
The fix is in SWT.