Browse Source

Make clicking checkbox label call focus listeners (#9271)

Fixes the remaining issue from #3944 for Firefox so that a click on the checkbox label calls the focus listener.

Fixes #9290
tags/8.1.0.alpha8
Knoobie 7 years ago
parent
commit
7b1e48f469

+ 3
- 3
client/src/main/java/com/vaadin/client/ui/VCheckBox.java View File

@@ -55,9 +55,9 @@ public class VCheckBox extends com.google.gwt.user.client.ui.CheckBox
el = DOM.getNextSibling(el);
}

if (BrowserInfo.get().isWebkit()) {
// Webkit does not focus non-text input elements on click
// (#11854)
if (BrowserInfo.get().isWebkit() || BrowserInfo.get().isFirefox()) {
// Webkit and Firefox do not focus non-text input elements on click
// (#3944)
addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {

+ 3
- 3
compatibility-client/src/main/java/com/vaadin/v7/client/ui/VCheckBox.java View File

@@ -60,9 +60,9 @@ public class VCheckBox extends com.google.gwt.user.client.ui.CheckBox
el = DOM.getNextSibling(el);
}

if (BrowserInfo.get().isWebkit()) {
// Webkit does not focus non-text input elements on click
// (#11854)
if (BrowserInfo.get().isWebkit() || BrowserInfo.get().isFirefox()) {
// Webkit and Firefox do not focus non-text input elements on click
// (#3944)
addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {

+ 32
- 0
uitest/src/main/java/com/vaadin/tests/components/checkbox/CheckboxFocusClick.java View File

@@ -0,0 +1,32 @@
/*
* Copyright 2000-2017 Vaadin Ltd.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/
package com.vaadin.tests.components.checkbox;

import com.vaadin.event.FieldEvents;
import com.vaadin.server.VaadinRequest;
import com.vaadin.tests.components.AbstractTestUIWithLog;
import com.vaadin.ui.CheckBox;

public class CheckboxFocusClick extends AbstractTestUIWithLog {

@Override
protected void setup(VaadinRequest request) {
final CheckBox cb = new CheckBox("Click me", true);
cb.addFocusListener((FieldEvents.FocusListener) event -> log("checkbox focused"));
addComponent(cb);
}

}

+ 37
- 0
uitest/src/test/java/com/vaadin/tests/components/checkbox/CheckboxFocusClickTest.java View File

@@ -0,0 +1,37 @@
/*
* Copyright 2000-2017 Vaadin Ltd.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/
package com.vaadin.tests.components.checkbox;

import com.vaadin.testbench.By;
import com.vaadin.testbench.elements.CheckBoxElement;
import com.vaadin.tests.tb3.MultiBrowserTest;
import org.junit.Assert;
import org.junit.Test;
import org.openqa.selenium.WebElement;

public class CheckboxFocusClickTest extends MultiBrowserTest {

@Test
public void contextClickCheckboxAndText() {
openTestURL();
CheckBoxElement checkbox = $(CheckBoxElement.class).first();
Assert.assertEquals("checked", checkbox.getValue());
WebElement label = checkbox.findElement(By.xpath("label"));

clickElement(label);
Assert.assertEquals("1. checkbox focused", getLogRow(0));
}
}

Loading…
Cancel
Save