@Override
public void onBrowserEvent(Event event) {
super.onBrowserEvent(event);
-
if (event.getTypeInt() == Event.ONPASTE) {
- if (textInputEnabled && connector.isEnabled()) {
+ if (textInputEnabled && connector.isEnabled()
+ && !connector.isReadOnly()) {
filterOptions(currentPage);
}
}
--- /dev/null
+package com.vaadin.tests.components.combobox;
+
+import com.vaadin.annotations.Widgetset;
+import com.vaadin.server.VaadinRequest;
+import com.vaadin.tests.components.AbstractTestUI;
+import com.vaadin.ui.ComboBox;
+
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+
+@Widgetset("com.vaadin.DefaultWidgetSet")
+public class ComboboxReadOnlyPaste extends AbstractTestUI {
+ @Override
+ protected void setup(VaadinRequest request) {
+ ComboBox<String> nameComboBox = new ComboBox<>("Name");
+ nameComboBox.setId("readOnlyCB");
+ nameComboBox.setEmptySelectionAllowed(true);
+ nameComboBox.setItems(
+ Stream.of("A", "B", "C", "D").collect(Collectors.toList()));
+ nameComboBox.setValue("B");
+ nameComboBox.setReadOnly(true);
+
+ addComponent(nameComboBox);
+ }
+}
--- /dev/null
+package com.vaadin.tests.components.combobox;
+
+import com.vaadin.testbench.elements.ComboBoxElement;
+import com.vaadin.tests.tb3.MultiBrowserTest;
+import org.junit.Test;
+import org.openqa.selenium.Keys;
+
+import static org.junit.Assert.assertFalse;
+
+public class ComboboxReadOnlyPasteTest extends MultiBrowserTest {
+
+ @Test
+ public void popupNotOpened() {
+ openTestURL();
+ ComboBoxElement cb = $(ComboBoxElement.class).first();
+ cb.click();
+ String paste = Keys.chord(Keys.CONTROL, "v");
+ cb.sendKeys(paste);
+ assertFalse("Pop-up should not be opened in read-only mode",
+ cb.isPopupOpen());
+ }
+}