Blur menu item hyperlinks on activation
This way the enter key is generally available for use as a navigation
key, rather than triggering the last menu item you activated.
Signed-off-by: Shawn O. Pearce <sop@google.com>
diff --git a/src/main/java/com/google/gerrit/client/ui/CommandMenuItem.java b/src/main/java/com/google/gerrit/client/ui/CommandMenuItem.java
index e2dc555..a12625f 100644
--- a/src/main/java/com/google/gerrit/client/ui/CommandMenuItem.java
+++ b/src/main/java/com/google/gerrit/client/ui/CommandMenuItem.java
@@ -33,6 +33,7 @@
@Override
public void onClick(final ClickEvent event) {
+ setFocus(false);
command.execute();
}
}
diff --git a/src/main/java/com/google/gerrit/client/ui/LinkMenuItem.java b/src/main/java/com/google/gerrit/client/ui/LinkMenuItem.java
index ab4da2a..cb4ccb0 100644
--- a/src/main/java/com/google/gerrit/client/ui/LinkMenuItem.java
+++ b/src/main/java/com/google/gerrit/client/ui/LinkMenuItem.java
@@ -14,13 +14,32 @@
package com.google.gerrit.client.ui;
+import com.google.gwt.core.client.GWT;
+import com.google.gwt.user.client.DOM;
+import com.google.gwt.user.client.Element;
+import com.google.gwt.user.client.Event;
import com.google.gwt.user.client.ui.Accessibility;
import com.google.gwt.user.client.ui.Hyperlink;
+import com.google.gwt.user.client.ui.impl.FocusImpl;
+import com.google.gwt.user.client.ui.impl.HyperlinkImpl;
public class LinkMenuItem extends Hyperlink {
+ private static HyperlinkImpl impl = GWT.create(HyperlinkImpl.class);
+ private static FocusImpl implPanel = GWT.create(FocusImpl.class);
+
public LinkMenuItem(final String text, final String targetHistoryToken) {
- super(text, targetHistoryToken);
+ super((Element) null);
+ setText(text);
+ setTargetHistoryToken(targetHistoryToken);
setStyleName("gerrit-MenuItem");
Accessibility.setRole(getElement(), Accessibility.ROLE_MENUITEM);
}
+
+ @Override
+ public void onBrowserEvent(Event event) {
+ super.onBrowserEvent(event);
+ if (DOM.eventGetType(event) == Event.ONCLICK && impl.handleAsClick(event)) {
+ implPanel.blur(getElement());
+ }
+ }
}