Browse Source

Prevent IndexOutOfBoundException in VMenuBar.CustomMenuItem (#11285)

* Fixes #10814

* Add missing tests

Fixes #11374
tags/8.7.0.beta1
Jonni Madekivi 5 years ago
parent
commit
5ad9dbf519

+ 1
- 0
client/src/main/java/com/vaadin/client/ui/VMenuBar.java View File

@@ -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 {

+ 37
- 0
uitest/src/main/java/com/vaadin/tests/components/menubar/MenuBarSmallWidth.java View File

@@ -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);
}
}

+ 13
- 0
uitest/src/test/java/com/vaadin/tests/components/menubar/MenuBarSmallWidthTest.java View File

@@ -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();
}
}

Loading…
Cancel
Save