From 32b0d04ed1cedd80fcafb9a1a9196c5a36a9708c Mon Sep 17 00:00:00 2001 From: Artur Signell Date: Thu, 12 Nov 2009 16:05:55 +0000 Subject: [PATCH] Merged test case and fix for #3705 - "CustomComponent does not inform child about size change" from 6.1 svn changeset:9760/svn branch:6.2 --- .../gwt/client/ui/VCustomComponent.java | 6 +++ .../CustomComponentSizeUpdate.java | 44 +++++++++++++++++++ 2 files changed, 50 insertions(+) create mode 100644 tests/src/com/vaadin/tests/components/customcomponent/CustomComponentSizeUpdate.java diff --git a/src/com/vaadin/terminal/gwt/client/ui/VCustomComponent.java b/src/com/vaadin/terminal/gwt/client/ui/VCustomComponent.java index d0c140dac0..dc3cd6b2e3 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/VCustomComponent.java +++ b/src/com/vaadin/terminal/gwt/client/ui/VCustomComponent.java @@ -68,6 +68,12 @@ public class VCustomComponent extends SimplePanel implements Container { renderSpace.setWidth(getElement().getOffsetWidth()); renderSpace.setHeight(getElement().getOffsetHeight()); + /* + * Needed to update client size if the size of this component has + * changed and the child uses relative size(s). + */ + client.runDescendentsLayout(this); + rendering = false; } diff --git a/tests/src/com/vaadin/tests/components/customcomponent/CustomComponentSizeUpdate.java b/tests/src/com/vaadin/tests/components/customcomponent/CustomComponentSizeUpdate.java new file mode 100644 index 0000000000..ad15db1b18 --- /dev/null +++ b/tests/src/com/vaadin/tests/components/customcomponent/CustomComponentSizeUpdate.java @@ -0,0 +1,44 @@ +package com.vaadin.tests.components.customcomponent; + +import com.vaadin.tests.components.TestBase; +import com.vaadin.ui.CustomComponent; +import com.vaadin.ui.NativeButton; +import com.vaadin.ui.Button.ClickEvent; +import com.vaadin.ui.Button.ClickListener; + +public class CustomComponentSizeUpdate extends TestBase { + + @Override + protected void setup() { + NativeButton nb = new NativeButton( + "100%x100% button. Click to reduce CustomComponent size"); + nb.setSizeFull(); + + final CustomComponent cc = new CustomComponent(nb); + cc.setWidth("500px"); + cc.setHeight("500px"); + + nb.addListener(new ClickListener() { + + public void buttonClick(ClickEvent event) { + cc.setWidth((cc.getWidth() - 20) + "px"); + cc.setHeight((cc.getHeight() - 20) + "px"); + + } + }); + + addComponent(cc); + + } + + @Override + protected String getDescription() { + return "Click the button to reduce the size of the parent. The button should be resized to fit the parent."; + } + + @Override + protected Integer getTicketNumber() { + return 3705; + } + +} -- 2.39.5