Browse Source

Force re-measurement of CheckBoxGroup and RadioButtonGroup (#9901)

The related tests have a workaround for another (Chrome specific) GridLayout bug #9921.
Those workarounds should be removed once that issue is fixed.

Fixes #9148
tags/8.2.0.alpha1
Petter Holmström 6 years ago
parent
commit
a75117689e

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

@@ -89,6 +89,7 @@ public class CheckBoxGroupConnector
items.add(item);
}
getWidget().buildOptions(items);
getLayoutManager().setNeedsMeasure(this);
}

@Override

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

@@ -121,6 +121,7 @@ public class RadioButtonGroupConnector
options.add(dataSource.getRow(i));
}
select.buildOptions(options);
getLayoutManager().setNeedsMeasure(this);
updateSelectedItem();
}


+ 1
- 1
tests/screenshots

@@ -1 +1 @@
Subproject commit 52b1a4148ba8b3a6a74278e4d7d041aa6d6620b7
Subproject commit 0cff74a59932e44a89ea1146b0e4b56b9928a209

+ 26
- 0
uitest/src/main/java/com/vaadin/tests/components/checkboxgroup/CheckBoxGroupInGridLayout.java View File

@@ -0,0 +1,26 @@
package com.vaadin.tests.components.checkboxgroup;

import com.vaadin.data.provider.DataProvider;
import com.vaadin.server.VaadinRequest;
import com.vaadin.tests.components.AbstractTestUI;
import com.vaadin.ui.CheckBoxGroup;
import com.vaadin.ui.GridLayout;
import com.vaadin.ui.TextField;
import com.vaadin.ui.themes.ValoTheme;

public class CheckBoxGroupInGridLayout extends AbstractTestUI {

@Override
protected void setup(VaadinRequest request) {
CheckBoxGroup<String> cbGroup = new CheckBoxGroup<>(null, DataProvider.ofItems("A", "B", "C"));
cbGroup.addStyleName(ValoTheme.OPTIONGROUP_HORIZONTAL);

GridLayout gridLayout = new GridLayout(2, 1);
gridLayout.addComponent(cbGroup, 0, 0);
gridLayout.setSpacing(true);

gridLayout.addComponent(new TextField(), 1, 0);

addComponent(gridLayout);
}
}

+ 26
- 0
uitest/src/main/java/com/vaadin/tests/components/radiobuttongroup/RadioButtonGroupInGridLayout.java View File

@@ -0,0 +1,26 @@
package com.vaadin.tests.components.radiobuttongroup;

import com.vaadin.data.provider.DataProvider;
import com.vaadin.server.VaadinRequest;
import com.vaadin.tests.components.AbstractTestUI;
import com.vaadin.ui.GridLayout;
import com.vaadin.ui.RadioButtonGroup;
import com.vaadin.ui.TextField;
import com.vaadin.ui.themes.ValoTheme;

public class RadioButtonGroupInGridLayout extends AbstractTestUI {

@Override
protected void setup(VaadinRequest request) {
RadioButtonGroup<String> cbGroup = new RadioButtonGroup<>(null, DataProvider.ofItems("A", "B", "C"));
cbGroup.addStyleName(ValoTheme.OPTIONGROUP_HORIZONTAL);

GridLayout gridLayout = new GridLayout(2, 1);
gridLayout.addComponent(cbGroup, 0, 0);
gridLayout.setSpacing(true);

gridLayout.addComponent(new TextField(), 1, 0);

addComponent(gridLayout);
}
}

+ 32
- 0
uitest/src/test/java/com/vaadin/tests/components/checkboxgroup/CheckBoxGroupInGridLayoutTest.java View File

@@ -0,0 +1,32 @@
package com.vaadin.tests.components.checkboxgroup;

import org.junit.Assert;
import org.junit.Test;

import com.vaadin.testbench.elements.CheckBoxGroupElement;
import com.vaadin.testbench.elements.GridLayoutElement;
import com.vaadin.testbench.parallel.BrowserUtil;
import com.vaadin.tests.tb3.MultiBrowserTest;

public class CheckBoxGroupInGridLayoutTest extends MultiBrowserTest {

@Test
public void slotSizeRemainsUnchangedAfterSelectingItem() {
openTestURL();
GridLayoutElement gridLayout = $(GridLayoutElement.class).first();
int before = gridLayout.getSize().getWidth();

CheckBoxGroupElement checkBoxGroup = $(CheckBoxGroupElement.class)
.first();
checkBoxGroup.setValue("A");
int after = gridLayout.getSize().getWidth();

boolean ok = (before == after);
// also accept broken layout for unrelated bug #9921 until it is fixed
if (!ok && BrowserUtil.isChrome(getDesiredCapabilities())) {
ok = (before == after + 4);
}

Assert.assertTrue("GridLayout size changed when selecting a value", ok);
}
}

+ 32
- 0
uitest/src/test/java/com/vaadin/tests/components/radiobuttongroup/RadioButtonGroupInGridLayoutTest.java View File

@@ -0,0 +1,32 @@
package com.vaadin.tests.components.radiobuttongroup;

import org.junit.Assert;
import org.junit.Test;

import com.vaadin.testbench.elements.GridLayoutElement;
import com.vaadin.testbench.elements.RadioButtonGroupElement;
import com.vaadin.testbench.parallel.BrowserUtil;
import com.vaadin.tests.tb3.MultiBrowserTest;

public class RadioButtonGroupInGridLayoutTest extends MultiBrowserTest {

@Test
public void slotSizeRemainsUnchangedAfterSelectingItem() {
openTestURL();
GridLayoutElement gridLayout = $(GridLayoutElement.class).first();
int before = gridLayout.getSize().getWidth();

RadioButtonGroupElement radioButtonGroup = $(
RadioButtonGroupElement.class).first();
radioButtonGroup.setValue("A");
int after = gridLayout.getSize().getWidth();

boolean ok = (before == after);
// also accept broken layout for unrelated bug #9921 until it is fixed
if (!ok && BrowserUtil.isChrome(getDesiredCapabilities())) {
ok = (before == after + 4);
}

Assert.assertTrue("GridLayout size changed when selecting a value", ok);
}
}

Loading…
Cancel
Save