]> source.dussan.org Git - vaadin-framework.git/commitdiff
Keep expand ratio for last row/column when reducing grid layout size (#20297) pr7969/r2
authorArtur Signell <artur@vaadin.com>
Fri, 14 Oct 2016 19:11:59 +0000 (22:11 +0300)
committerDenis Anisimov <denis@vaadin.com>
Mon, 12 Dec 2016 15:11:03 +0000 (17:11 +0200)
Change-Id: Iff53a803596f4fc1eae8e4bfa307b9c1f4df961a

server/src/main/java/com/vaadin/ui/GridLayout.java
server/src/test/java/com/vaadin/tests/server/component/gridlayout/GridLayoutTest.java

index f56a90be9514cad0a6a0fb0b59b69884a06100de..e4562f81ce287b91de1883b8fe915e901e04012f 100644 (file)
@@ -740,7 +740,7 @@ public class GridLayout extends AbstractLayout
 
         // Forget expands for removed columns
         if (columns < getColumns()) {
-            for (int i = columns - 1; i < getColumns(); i++) {
+            for (int i = columns; i < getColumns(); i++) {
                 columnExpandRatio.remove(i);
                 getState().explicitColRatios.remove(i);
             }
@@ -790,7 +790,7 @@ public class GridLayout extends AbstractLayout
         }
         // Forget expands for removed rows
         if (rows < getRows()) {
-            for (int i = rows - 1; i < getRows(); i++) {
+            for (int i = rows; i < getRows(); i++) {
                 rowExpandRatio.remove(i);
                 getState().explicitRowRatios.remove(i);
             }
index 1eabf2fb6250a93fa410d7fa59cb91612d73fe42..64b466612f9aeb299c3b8508b84d193ead3209ac 100644 (file)
@@ -75,6 +75,30 @@ public class GridLayoutTest {
         assertOrder(grid, new int[] { 0, 1, 2, 3 });
     }
 
+    @Test
+    public void removeRowsExpandRatiosPreserved() {
+        GridLayout gl = new GridLayout(3, 3);
+        gl.setRowExpandRatio(0, 0);
+        gl.setRowExpandRatio(1, 1);
+        gl.setRowExpandRatio(2, 2);
+
+        gl.setRows(2);
+        assertEquals(0, gl.getRowExpandRatio(0), 0);
+        assertEquals(1, gl.getRowExpandRatio(1), 0);
+    }
+
+    @Test
+    public void removeColsExpandRatiosPreserved() {
+        GridLayout gl = new GridLayout(3, 3);
+        gl.setColumnExpandRatio(0, 0);
+        gl.setColumnExpandRatio(1, 1);
+        gl.setColumnExpandRatio(2, 2);
+
+        gl.setColumns(2);
+        assertEquals(0, gl.getColumnExpandRatio(0), 0);
+        assertEquals(1, gl.getColumnExpandRatio(1), 0);
+    }
+
     private void assertContentPositions(GridLayout grid) {
         assertEquals(grid.getComponentCount(), children.length);
         int c = 0;