aboutsummaryrefslogtreecommitdiffstats
path: root/client
diff options
context:
space:
mode:
Diffstat (limited to 'client')
-rw-r--r--client/src/main/java/com/vaadin/client/ui/VMenuBar.java47
1 files changed, 21 insertions, 26 deletions
diff --git a/client/src/main/java/com/vaadin/client/ui/VMenuBar.java b/client/src/main/java/com/vaadin/client/ui/VMenuBar.java
index b3825d2de5..e0cea1c837 100644
--- a/client/src/main/java/com/vaadin/client/ui/VMenuBar.java
+++ b/client/src/main/java/com/vaadin/client/ui/VMenuBar.java
@@ -21,7 +21,6 @@ import java.util.List;
import java.util.Queue;
import com.google.gwt.core.client.GWT;
-import com.google.gwt.core.client.Scheduler;
import com.google.gwt.core.client.Scheduler.ScheduledCommand;
import com.google.gwt.dom.client.Element;
import com.google.gwt.dom.client.Style;
@@ -437,16 +436,16 @@ public class VMenuBar extends SimpleFocusablePanel implements
*/
public void itemClick(CustomMenuItem item) {
if (item.getCommand() != null) {
- setSelected(null);
-
- if (visibleChildMenu != null) {
- visibleChildMenu.hideChildren();
+ try {
+ item.getCommand().execute();
+ } finally {
+ setSelected(null);
+ if (visibleChildMenu != null) {
+ visibleChildMenu.hideChildren();
+ }
+ hideParents(true);
+ menuVisible = false;
}
-
- hideParents(true);
- menuVisible = false;
- Scheduler.get().scheduleDeferred(item.getCommand());
-
} else {
if (item.getSubMenu() != null
&& item.getSubMenu() != visibleChildMenu) {
@@ -1523,23 +1522,19 @@ public class VMenuBar extends SimpleFocusablePanel implements
// selection there
openMenuAndFocusFirstIfPossible(getSelected());
} else {
- final Command command = getSelected().getCommand();
-
- setSelected(null);
- hideParents(true);
-
- // #17076 keyboard selected menuitem without children: do
- // not leave menu to visible ("hover open") mode
- menuVisible = false;
-
- Scheduler.get().scheduleDeferred(new ScheduledCommand() {
- @Override
- public void execute() {
- if (command != null) {
- command.execute();
- }
+ try {
+ final Command command = getSelected().getCommand();
+ if (command != null) {
+ command.execute();
}
- });
+ } finally {
+ setSelected(null);
+ hideParents(true);
+
+ // #17076 keyboard selected menuitem without children: do
+ // not leave menu to visible ("hover open") mode
+ menuVisible = false;
+ }
}
}