aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--client/src/main/java/com/vaadin/client/ui/VMenuBar.java1
-rw-r--r--uitest/src/main/java/com/vaadin/tests/components/menubar/MenuBarSmallWidth.java37
-rw-r--r--uitest/src/test/java/com/vaadin/tests/components/menubar/MenuBarSmallWidthTest.java13
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();
+ }
+}