\r
private int borderPaddingVertical;\r
\r
+ private boolean rendering = false;\r
+\r
public IForm() {\r
setElement(DOM.createDiv());\r
DOM.appendChild(getElement(), fieldSet);\r
}\r
\r
public void updateFromUIDL(UIDL uidl, ApplicationConnection client) {\r
+ rendering = true;\r
+\r
if (this.client == null) {\r
this.client = client;\r
borderPaddingVertical = getOffsetHeight();\r
}\r
\r
if (client.updateComponent(this, uidl, false)) {\r
+ rendering = false;\r
return;\r
}\r
\r
client.unregisterPaintable(footer);\r
}\r
}\r
+\r
+ rendering = false;\r
}\r
\r
public void updateSize() {\r
\r
updateSize();\r
\r
- if (height.equals("")) {\r
+ if (!rendering && height.equals("")) {\r
// Width might affect height\r
Util.updateRelativeChildrenAndSendSizeUpdateEvent(client, this);\r
}\r
--- /dev/null
+package com.itmill.toolkit.tests.components.form;\r
+\r
+import com.itmill.toolkit.data.Item;\r
+import com.itmill.toolkit.event.ItemClickEvent;\r
+import com.itmill.toolkit.event.ItemClickEvent.ItemClickListener;\r
+import com.itmill.toolkit.tests.components.TestBase;\r
+import com.itmill.toolkit.ui.Form;\r
+import com.itmill.toolkit.ui.Panel;\r
+import com.itmill.toolkit.ui.Table;\r
+import com.itmill.toolkit.ui.VerticalLayout;\r
+\r
+public class FormRenderingFlicker extends TestBase {\r
+\r
+ private VerticalLayout tableLayout;\r
+ private Table table;\r
+ private Panel tablePanel;\r
+ private Form form;\r
+\r
+ @Override\r
+ protected String getDescription() {\r
+ return "Clicking on an item in the table will replace the panel (surrounding the table) with a form. This should not cause the table rows to move downwards or cause any other visible flicker";\r
+ }\r
+\r
+ @Override\r
+ protected Integer getTicketNumber() {\r
+ return 2816;\r
+ }\r
+\r
+ @Override\r
+ protected void setup() {\r
+ createTableLayout();\r
+ form = new Form();\r
+\r
+ tablePanel = new Panel();\r
+ tablePanel.setLayout(tableLayout);\r
+\r
+ addComponent(tablePanel);\r
+ }\r
+\r
+ private void createTableLayout() {\r
+ tableLayout = new VerticalLayout();\r
+ table = new Table();\r
+ table.addContainerProperty("name", String.class, "");\r
+ table.addContainerProperty("age", String.class, "");\r
+ for (int i = 0; i < 100; i++) {\r
+ table.addItem(new Object[] { "Name " + i, String.valueOf(i) },\r
+ new Object());\r
+ }\r
+ table.setImmediate(true);\r
+ table.addListener(new ItemClickListener() {\r
+\r
+ public void itemClick(ItemClickEvent event) {\r
+ clicked(event.getItem());\r
+ }\r
+\r
+ });\r
+\r
+ tableLayout.addComponent(table);\r
+ }\r
+\r
+ protected void clicked(Item item) {\r
+ getLayout().replaceComponent(tablePanel, form);\r
+ }\r
+\r
+}\r