Bug with Opera, URIFragmentUtility and plain link in CustomLayout

Got a ticket form our customer today about an interesting issue - happens with Vaadin 6.2.2 (maybe older versions are affected too) and Opera 9 and 10:

  • A regular Vaadin app
  • CustomLayout-based window
  • URIFragmentUtility, attached to the window
  • plain html link like: <a href="#foo">Preferences</a> in a CustomLayout html file

In all amjor browsers like IE, FF, Safari, Chrome - click to that plain html link results trigger in URIFragmentUtility. But not in Opera. When the link clicked in Opera, the address bar is changed to “http://localhost:8080/myapp#foo” but URIFragmentUtility does not react. Only when you hit page refresh button, an “uri fragment changed” event for #foo is triggered.

Not sure, if this an Opera specifics when handling clicks or bug in URIFragmentUtility/Window, as I was able to see this visually but my mac died past night so Im out of hands for today :frowning:

P.S. The good point, Apple agreed to replace it with the new one :slight_smile: but I have to wait about a month %|

This seems to be
GWT issue #3956
. The workaround from the issue tracker is to add

 <!-- Opera needs a different implementation due to issue #3956 --> 
  <replace-with class="com.google.gwt.user.client.impl.HistoryImplTimer"> 
    <when-type-is class="com.google.gwt.user.client.impl.HistoryImpl"/> 
    <any> 
      <when-property-is name="user.agent" value="opera"/> 
    </any> 
  </replace-with>

to the widgetset. At least this seemed to fix my test case for this issue.

EDIT: Created ticket
#4099
for this.