diff options
3 files changed, 51 insertions, 0 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 a652cf79fd..2d4f35a2ad 100644 --- a/client/src/main/java/com/vaadin/client/ui/VMenuBar.java +++ b/client/src/main/java/com/vaadin/client/ui/VMenuBar.java @@ -903,6 +903,7 @@ public class VMenuBar extends FocusableFlowPanel implements super.onLoad(); if (getParentMenu() != null && getParentMenu().getParentMenu() == null + && getParentMenu().getItems().size() >= 1 && getParentMenu().getItems().get(0).equals(this)) { getElement().setAttribute("tabindex", "0"); } else { diff --git a/uitest/src/main/java/com/vaadin/tests/components/menubar/MenuBarSmallWidth.java b/uitest/src/main/java/com/vaadin/tests/components/menubar/MenuBarSmallWidth.java new file mode 100644 index 0000000000..650cae0f62 --- /dev/null +++ b/uitest/src/main/java/com/vaadin/tests/components/menubar/MenuBarSmallWidth.java @@ -0,0 +1,37 @@ +package com.vaadin.tests.components.menubar; + +import com.vaadin.annotations.Widgetset; +import com.vaadin.server.ThemeResource; +import com.vaadin.server.VaadinRequest; +import com.vaadin.tests.components.AbstractTestUI; +import com.vaadin.ui.Label; +import com.vaadin.ui.MenuBar; + +@Widgetset("com.vaadin.DefaultWidgetSet") +public class MenuBarSmallWidth extends AbstractTestUI { + @Override + protected void setup(VaadinRequest request) { + MenuBar barmenu = new MenuBar(); + barmenu.setWidth("50px"); + addComponent(barmenu); + // A top-level menu item that opens a submenu + MenuBar.MenuItem drinks = barmenu.addItem("Beverages", null, null); + + // Submenu item with a sub-submenu + MenuBar.MenuItem hots = drinks.addItem("Hot", null, null); + hots.addItem("Tea", new ThemeResource("icons/tea-16px.png"), null); + hots.addItem("Coffee", new ThemeResource("icons/coffee-16px.png"), + null); + + // Another submenu item with a sub-submenu + MenuBar.MenuItem colds = drinks.addItem("Cold", null, null); + colds.addItem("Milk", null, null); + colds.addItem("Weissbier", null, null); + + // Another top-level item + MenuBar.MenuItem snacks = barmenu.addItem("Snacks", null, null); + snacks.addItem("Weisswurst", null, null); + snacks.addItem("Bratwurst", null, null); + snacks.addItem("Currywurst", null, null); + } +} diff --git a/uitest/src/test/java/com/vaadin/tests/components/menubar/MenuBarSmallWidthTest.java b/uitest/src/test/java/com/vaadin/tests/components/menubar/MenuBarSmallWidthTest.java new file mode 100644 index 0000000000..cf3fb294cc --- /dev/null +++ b/uitest/src/test/java/com/vaadin/tests/components/menubar/MenuBarSmallWidthTest.java @@ -0,0 +1,13 @@ +package com.vaadin.tests.components.menubar; + +import com.vaadin.tests.tb3.MultiBrowserTest; +import org.junit.Test; + +public class MenuBarSmallWidthTest extends MultiBrowserTest { + + @Test + public void noIndexOutOfBoundsExceptionPresent() { + openTestURL("debug"); + assertNoErrorNotifications(); + } +} |