Browse Source

Read-only combobox should not handle PASTE event (#11529)

Fixes 11528
tags/8.8.0.beta1
Anastasia Smirnova 5 years ago
parent
commit
049e6f39aa

+ 2
- 2
client/src/main/java/com/vaadin/client/ui/VComboBox.java View File

@@ -1807,9 +1807,9 @@ public class VComboBox extends Composite implements Field, KeyDownHandler,
@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);
}
}

+ 25
- 0
uitest/src/main/java/com/vaadin/tests/components/combobox/ComboboxReadOnlyPaste.java View File

@@ -0,0 +1,25 @@
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);
}
}

+ 22
- 0
uitest/src/test/java/com/vaadin/tests/components/combobox/ComboboxReadOnlyPasteTest.java View File

@@ -0,0 +1,22 @@
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());
}
}

Loading…
Cancel
Save