You have to make sure that you directly call Window.open() in the ClickHandler. Don't to it in a Timer, deferred command or similar inside the ClickHandler. The Browser must recognize that Window.open() is directly called because of a user action. It does not matter if its a Button or an Anchor.
Also don't do Window.open() somewhere deep in a sub function called inside the ClickHandler.
Something like the following will work:
Button b = new Button("Test");
b.addClickHandler(new ClickHandler() {
void onClick(ClickEvent e) {
}
});
If you wrap Window.open() for example in a Timer it won't work anymore.
-- J.