summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAnna Miroshnik <anna.miroshnik@arcadia.spb.ru>2014-11-14 13:46:12 +0300
committerSauli Tähkäpää <sauli@vaadin.com>2014-12-16 23:01:47 +0200
commit2e0c15ad0aaf6e3426373425baf4966d29abf66f (patch)
treef2adfbbfd24227846a21d8c14edd0561e1043b2b
parent444533838a64aaeb1b9c77e534b166440546fe87 (diff)
downloadvaadin-framework-2e0c15ad0aaf6e3426373425baf4966d29abf66f.tar.gz
vaadin-framework-2e0c15ad0aaf6e3426373425baf4966d29abf66f.zip
Delayed column layouting is visible (#15189)
Full Name of defect: Regression: Table column jumps when table is shown and table is contained in a layout Regression is a outcome of change due to #12672. No TB4 test because problem happens too fast to be caught. Change-Id: I9af5ed3c11e0fb673c7f2f1c5fd4739bd4b8c655
-rw-r--r--client/src/com/vaadin/client/ui/orderedlayout/AbstractOrderedLayoutConnector.java15
-rw-r--r--uitest/src/com/vaadin/tests/components/table/DelayedColumnLayouting.java72
2 files changed, 73 insertions, 14 deletions
diff --git a/client/src/com/vaadin/client/ui/orderedlayout/AbstractOrderedLayoutConnector.java b/client/src/com/vaadin/client/ui/orderedlayout/AbstractOrderedLayoutConnector.java
index aace349392..0c09ae49c6 100644
--- a/client/src/com/vaadin/client/ui/orderedlayout/AbstractOrderedLayoutConnector.java
+++ b/client/src/com/vaadin/client/ui/orderedlayout/AbstractOrderedLayoutConnector.java
@@ -152,20 +152,7 @@ public abstract class AbstractOrderedLayoutConnector extends
public void onElementResize(ElementResizeEvent e) {
updateLayoutHeight();
if (needsExpand()) {
- /*
- * updateLayoutHeight causes calling of
- * getLayoutManager().setNeedsMeasure(this) which informs this
- * LayoutManager that the size of a component might have
- * changed. Then a new layout phase is scheduled. So
- * updateExpandCompensation must be delayed until layout phase
- * will be completed. #12672
- */
- Scheduler.get().scheduleFinally(new ScheduledCommand() {
- @Override
- public void execute() {
- getWidget().updateExpandCompensation();
- }
- });
+ getWidget().updateExpandCompensation();
}
}
};
diff --git a/uitest/src/com/vaadin/tests/components/table/DelayedColumnLayouting.java b/uitest/src/com/vaadin/tests/components/table/DelayedColumnLayouting.java
new file mode 100644
index 0000000000..c327ddb6f3
--- /dev/null
+++ b/uitest/src/com/vaadin/tests/components/table/DelayedColumnLayouting.java
@@ -0,0 +1,72 @@
+/*
+ * Copyright 2000-2014 Vaadin Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+package com.vaadin.tests.components.table;
+
+import com.vaadin.server.VaadinRequest;
+import com.vaadin.ui.Button;
+import com.vaadin.ui.Button.ClickEvent;
+import com.vaadin.ui.Button.ClickListener;
+import com.vaadin.ui.Table;
+import com.vaadin.ui.UI;
+import com.vaadin.ui.VerticalLayout;
+
+/**
+ * For tables that are contained in a layout, a delayed column layouting should
+ * not be visible (because it makes the column jump around).
+ *
+ * #15189
+ *
+ * @author Vaadin Ltd
+ */
+public class DelayedColumnLayouting extends UI {
+
+ @Override
+ protected void init(VaadinRequest request) {
+ VerticalLayout verticalLayout = new VerticalLayout();
+ verticalLayout.setSizeFull();
+ final VerticalLayout layout = new VerticalLayout();
+ layout.setSizeFull();
+ layout.setSpacing(true);
+
+ Button reset = new Button("Recreate layout with contained table");
+ verticalLayout.addComponent(reset);
+ reset.addClickListener(new ClickListener() {
+ @Override
+ public void buttonClick(ClickEvent event) {
+ fillLayout(layout);
+ }
+ });
+
+ fillLayout(layout);
+
+ verticalLayout.addComponent(layout);
+ verticalLayout.setExpandRatio(layout, 1f);
+
+ setContent(verticalLayout);
+ }
+
+ private void fillLayout(VerticalLayout layout) {
+ layout.removeAllComponents();
+
+ Table table = new Table();
+ table.setSizeFull();
+ table.addContainerProperty("First", String.class, "");
+ table.addContainerProperty("This column jumps", String.class, "");
+
+ layout.addComponent(table);
+ layout.setExpandRatio(table, 1f);
+ }
+} \ No newline at end of file