Allow to keep size of Widget on DeckPanel.
Review: http://gwt-code-reviews.appspot.com/732802
Review by: jlabanca@google.com
git-svn-id: https://google-web-toolkit.googlecode.com/svn/trunk@8596 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/user/src/com/google/gwt/user/client/ui/DeckPanel.java b/user/src/com/google/gwt/user/client/ui/DeckPanel.java
index 0126171..7975f2f 100644
--- a/user/src/com/google/gwt/user/client/ui/DeckPanel.java
+++ b/user/src/com/google/gwt/user/client/ui/DeckPanel.java
@@ -341,7 +341,15 @@
private void finishWidgetInitialization(Element container, Widget w) {
UIObject.setVisible(container, false);
DOM.setStyleAttribute(container, "height", "100%");
- w.setSize("100%", "100%");
+
+ // Set 100% by default.
+ Element element = w.getElement();
+ if (DOM.getStyleAttribute(element, "width").equals("")) {
+ w.setWidth("100%");
+ }
+ if (DOM.getStyleAttribute(element, "height").equals("")) {
+ w.setHeight("100%");
+ }
// Issue 2510: Hiding the widget isn't necessary because we hide its
// wrapper, but it's in here for legacy support.
diff --git a/user/test/com/google/gwt/user/client/ui/DeckPanelTest.java b/user/test/com/google/gwt/user/client/ui/DeckPanelTest.java
index 562957e..b37d6bb 100644
--- a/user/test/com/google/gwt/user/client/ui/DeckPanelTest.java
+++ b/user/test/com/google/gwt/user/client/ui/DeckPanelTest.java
@@ -16,6 +16,8 @@
package com.google.gwt.user.client.ui;
+import com.google.gwt.user.client.DOM;
+
/**
* Test for {@link DeckPanel}.
*/
@@ -99,6 +101,46 @@
// Verify content.onLoad was actually called
assertEquals("attached", content.getText());
}
+
+ /**
+ * Test that style width/height is set to 100% by default.
+ */
+ public void testWidgetDefaultSizeOnAdd() {
+ DeckPanel deck = new DeckPanel();
+ RootPanel.get().add(deck);
+
+ // Prepare widget, no width/height initially
+ Label content = new Label("content");
+ assertEquals("", content.getElement().getStyle().getWidth());
+ assertEquals("", content.getElement().getStyle().getHeight());
+
+ // Add a widget to the DeckPanel
+ deck.add(content);
+
+ // Verify width/height
+ assertEquals("100%", content.getElement().getStyle().getWidth());
+ assertEquals("100%", content.getElement().getStyle().getHeight());
+ }
+
+ /**
+ * Test that existing width/height is kept as is during add.
+ */
+ public void testWidgetKeepSizeOnAdd() {
+ DeckPanel deck = new DeckPanel();
+ RootPanel.get().add(deck);
+
+ // Prepare widget, with width/height
+ Label content = new Label("content");
+ DOM.setStyleAttribute(content.getElement(), "width", "5cm");
+ DOM.setStyleAttribute(content.getElement(), "height", "30mm");
+
+ // Add a widget to the DeckPanel
+ deck.add(content);
+
+ // Verify width/height
+ assertEquals("5cm", DOM.getStyleAttribute(content.getElement(), "width"));
+ assertEquals("30mm", DOM.getStyleAttribute(content.getElement(), "height"));
+ }
@Override
protected DeckPanel createPanel() {