summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xclient/src/main/java/com/vaadin/client/widgets/Grid.java4
-rw-r--r--uitest/src/main/java/com/vaadin/tests/components/grid/GridUnhideColumnsWithFrozen.java40
-rw-r--r--uitest/src/test/java/com/vaadin/tests/components/grid/GridUnhideColumnsWithFrozenTest.java38
3 files changed, 81 insertions, 1 deletions
diff --git a/client/src/main/java/com/vaadin/client/widgets/Grid.java b/client/src/main/java/com/vaadin/client/widgets/Grid.java
index 6a42d3708f..4f13d0ae42 100755
--- a/client/src/main/java/com/vaadin/client/widgets/Grid.java
+++ b/client/src/main/java/com/vaadin/client/widgets/Grid.java
@@ -5336,7 +5336,9 @@ public class Grid<T> extends ResizeComposite implements HasSelectionHandlers<T>,
int escalatorFrozenColumns = grid.escalator
.getColumnConfiguration().getFrozenColumnCount();
if (gridFrozenColumns > escalatorFrozenColumns
- && escalatorFrozenColumns == columnIndex) {
+ && escalatorFrozenColumns == columnIndex
+ && grid.getColumns()
+ .indexOf(this) < gridFrozenColumns) {
grid.escalator.getColumnConfiguration()
.setFrozenColumnCount(++escalatorFrozenColumns);
}
diff --git a/uitest/src/main/java/com/vaadin/tests/components/grid/GridUnhideColumnsWithFrozen.java b/uitest/src/main/java/com/vaadin/tests/components/grid/GridUnhideColumnsWithFrozen.java
new file mode 100644
index 0000000000..e0b65ff8d3
--- /dev/null
+++ b/uitest/src/main/java/com/vaadin/tests/components/grid/GridUnhideColumnsWithFrozen.java
@@ -0,0 +1,40 @@
+package com.vaadin.tests.components.grid;
+
+import com.vaadin.server.VaadinRequest;
+import com.vaadin.tests.components.AbstractTestUI;
+import com.vaadin.ui.Component;
+import com.vaadin.ui.Grid;
+import com.vaadin.ui.Label;
+
+public class GridUnhideColumnsWithFrozen extends AbstractTestUI {
+
+ @Override
+ protected void setup(VaadinRequest request) {
+ Grid<Integer> grid = new Grid<>();
+ for (int i = 0; i < 15; i++) {
+ String columnId = String.valueOf(i);
+ Grid.Column<Integer, Component> column = addColumn(grid, columnId);
+ column.setHidable(true);
+ if (i == 3 || i == 4) {
+ column.setHidden(true);
+ }
+ column.setCaption(columnId);
+ column.setId(columnId);
+ }
+ grid.setFrozenColumnCount(4);
+ grid.setItems(0);
+ addComponent(grid);
+ }
+
+ private Grid.Column<Integer, Component> addColumn(Grid<Integer> grid,
+ String columnId) {
+ return grid.addComponentColumn(i -> new Label(columnId));
+ }
+
+ @Override
+ protected String getTestDescription() {
+ return "Columns 0-3 have been set frozen, unhiding column 4 before column 3"
+ + " should not make column 4 frozen.";
+ }
+
+}
diff --git a/uitest/src/test/java/com/vaadin/tests/components/grid/GridUnhideColumnsWithFrozenTest.java b/uitest/src/test/java/com/vaadin/tests/components/grid/GridUnhideColumnsWithFrozenTest.java
new file mode 100644
index 0000000000..061e1d20e1
--- /dev/null
+++ b/uitest/src/test/java/com/vaadin/tests/components/grid/GridUnhideColumnsWithFrozenTest.java
@@ -0,0 +1,38 @@
+package com.vaadin.tests.components.grid;
+
+import static org.junit.Assert.assertEquals;
+
+import java.util.List;
+
+import org.junit.Test;
+import org.openqa.selenium.By;
+import org.openqa.selenium.WebElement;
+
+import com.vaadin.testbench.elements.GridElement;
+import com.vaadin.tests.tb3.SingleBrowserTest;
+
+public class GridUnhideColumnsWithFrozenTest extends SingleBrowserTest {
+
+ @Test
+ public void visibleFrozenColumnCount() {
+ openTestURL();
+
+ GridElement grid = $(GridElement.class).first();
+ List<WebElement> frozen = grid.getHeader()
+ .findElements(By.className("frozen"));
+ assertEquals("Unexpected frozen column count before unhiding", 3,
+ frozen.size());
+
+ grid.findElement(By.className("v-grid-sidebar-button")).click();
+ List<WebElement> hidden = findElement(
+ By.className("v-grid-sidebar-content"))
+ .findElements(By.className("hidden"));
+ assertEquals("Unexpected amount of hidden columns", 2, hidden.size());
+ assertEquals("Unexpected hidden column", "4", hidden.get(1).getText());
+ hidden.get(1).click();
+
+ frozen = grid.getHeader().findElements(By.className("frozen"));
+ assertEquals("Unexpected frozen column count after unhiding", 3,
+ frozen.size());
+ }
+}