diff options
Diffstat (limited to 'client')
-rw-r--r-- | client/src/main/java/com/vaadin/client/ui/VMenuBar.java | 47 |
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; + } } } |