aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/com/itmill/toolkit/tests/tickets/Ticket2337.java43
-rw-r--r--src/com/itmill/toolkit/ui/GridLayout.java13
2 files changed, 52 insertions, 4 deletions
diff --git a/src/com/itmill/toolkit/tests/tickets/Ticket2337.java b/src/com/itmill/toolkit/tests/tickets/Ticket2337.java
new file mode 100644
index 0000000000..6747968482
--- /dev/null
+++ b/src/com/itmill/toolkit/tests/tickets/Ticket2337.java
@@ -0,0 +1,43 @@
+package com.itmill.toolkit.tests.tickets;
+
+import com.itmill.toolkit.Application;
+import com.itmill.toolkit.ui.Button;
+import com.itmill.toolkit.ui.GridLayout;
+import com.itmill.toolkit.ui.Label;
+import com.itmill.toolkit.ui.Window;
+import com.itmill.toolkit.ui.Button.ClickEvent;
+
+public class Ticket2337 extends Application {
+
+ GridLayout gl = new GridLayout(3, 1);
+
+ public void init() {
+ Window w = new Window();
+ setMainWindow(w);
+ Button b = new Button("add", new Button.ClickListener() {
+
+ public void buttonClick(ClickEvent event) {
+ gl.addComponent(new Label("asd"), 0, gl.getCursorY(), 2, gl
+ .getCursorY());
+
+ }
+
+ });
+ w.addComponent(b);
+
+ b = new Button("empty", new Button.ClickListener() {
+
+ public void buttonClick(ClickEvent event) {
+ gl.removeAllComponents();
+ ;
+
+ }
+
+ });
+ w.addComponent(b);
+
+ w.addComponent(gl);
+
+ }
+
+}
diff --git a/src/com/itmill/toolkit/ui/GridLayout.java b/src/com/itmill/toolkit/ui/GridLayout.java
index 0b43cb6ba5..114d3dce9c 100644
--- a/src/com/itmill/toolkit/ui/GridLayout.java
+++ b/src/com/itmill/toolkit/ui/GridLayout.java
@@ -203,12 +203,17 @@ public class GridLayout extends AbstractLayout implements
// outside this area, even if it's occupied
if (cursorX >= column1 && cursorX <= column2 && cursorY >= row1
&& cursorY <= row2) {
- cursorX = column2 + 1;
+ // cursor within area
+ cursorX = column2 + 1; // one right of area
if (cursorX >= cols) {
- cursorX = 0;
+ // overflowed columns
+ cursorX = 0; // first col
+ // move one row down, or one row under the area
cursorY = (column1 == 0 ? row2 : row1) + 1;
- } else {
- cursorY = row1;
+ if (cursorY >= rows) {
+ // rows overflow, increase
+ rows = cursorY + 1;
+ }
}
}