Fixes the remaining issue from #3944 for Firefox so that a click on the checkbox label calls the focus listener. Fixes #9290tags/8.1.0.alpha8
@@ -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) { |
@@ -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) { |
@@ -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); | |||
} | |||
} |
@@ -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)); | |||
} | |||
} |