Reviewers: jlabanca,
Please review this at http://gwt-code-reviews.appspot.com/132818
Affected files:
M
google3/third_party/java/gwt/source/svn/user/src/com/google/gwt/user/client/ui/TabLayoutPanel.java
M
google3/third_party/java/gwt/source/svn/user/test/com/google/gwt/user/client/ui/TabLayoutPanelTest.java
Index:
google3/third_party/java/gwt/source/svn/user/src/com/google/gwt/user/client/ui/TabLayoutPanel.java
diff --git
a/google3/third_party/java/gwt/source/svn/user/src/com/google/gwt/user/client/ui/TabLayoutPanel.java
b/google3/third_party/java/gwt/source/svn/user/src/com/google/gwt/user/client/ui/TabLayoutPanel.java
index
affa84b2458d87ea8b182c38bcaf71bfae4612ef..8a4448f6435ce6e720c125102d6715c578437c5b
100644
---
a/google3/third_party/java/gwt/source/svn/user/src/com/google/gwt/user/client/ui/TabLayoutPanel.java
+++
b/google3/third_party/java/gwt/source/svn/user/src/com/google/gwt/user/client/ui/TabLayoutPanel.java
@@ -18,8 +18,8 @@ package com.google.gwt.user.client.ui;
import com.google.gwt.dom.client.Document;
import com.google.gwt.dom.client.Element;
import com.google.gwt.dom.client.Style;
+import com.google.gwt.dom.client.Style.Display;
import com.google.gwt.dom.client.Style.Unit;
-import com.google.gwt.dom.client.Style.Visibility;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.event.logical.shared.BeforeSelectionEvent;
@@ -381,13 +381,17 @@ public class TabLayoutPanel extends ResizeComposite
implements HasWidgets,
// Update the tabs being selected and unselected.
if (selectedIndex != -1) {
- Element container =
panel.getWidgetContainerElement(children.get(selectedIndex));
- container.getStyle().setVisibility(Visibility.HIDDEN);
+ Widget child = children.get(selectedIndex);
+ Element container = panel.getWidgetContainerElement(child);
+ container.getStyle().setDisplay(Display.NONE);
+ child.setVisible(false);
tabs.get(selectedIndex).setSelected(false);
}
- Element container =
panel.getWidgetContainerElement(children.get(index));
- container.getStyle().clearVisibility();
+ Widget child = children.get(index);
+ Element container = panel.getWidgetContainerElement(child);
+ container.getStyle().clearDisplay();
+ child.setVisible(true);
tabs.get(index).setSelected(true);
selectedIndex = index;
@@ -472,7 +476,8 @@ public class TabLayoutPanel extends ResizeComposite
implements HasWidgets,
private void layoutChild(Widget child) {
panel.setWidgetLeftRight(child, 0, Unit.PX, 0, Unit.PX);
panel.setWidgetTopBottom(child, barHeight, barUnit, 0, Unit.PX);
- panel.getWidgetContainerElement(child).getStyle().setVisibility(
- Visibility.HIDDEN);
+ panel.getWidgetContainerElement(child).getStyle().setDisplay(
+ Display.NONE);
+ child.setVisible(false);
}
}
Index:
google3/third_party/java/gwt/source/svn/user/test/com/google/gwt/user/client/ui/TabLayoutPanelTest.java
diff --git
a/google3/third_party/java/gwt/source/svn/user/test/com/google/gwt/user/client/ui/TabLayoutPanelTest.java
b/google3/third_party/java/gwt/source/svn/user/test/com/google/gwt/user/client/ui/TabLayoutPanelTest.java
index
9c387d6bef124dcfe16801984857b3b6f53fb478..ee6ee6cf64a035fffe92d3062e2c509df1153624
100644
---
a/google3/third_party/java/gwt/source/svn/user/test/com/google/gwt/user/client/ui/TabLayoutPanelTest.java
+++
b/google3/third_party/java/gwt/source/svn/user/test/com/google/gwt/user/client/ui/TabLayoutPanelTest.java
@@ -176,6 +176,36 @@ public class TabLayoutPanelTest extends GWTTestCase {
}
/**
+ * Test that {...@link TabLayoutPanel} calls widget.setVisible(true/false)
on
+ * each widget, when it is shown/hidden.
+ */
+ public void testSetWidgetVisible() {
+ TabLayoutPanel p = new TabLayoutPanel(1, Unit.EM);
+ Label[] labels = new Label[3];
+ for (int i = 0; i < labels.length; i++) {
+ labels[i] = new Label("content" + i);
+ p.add(labels[i]);
+ }
+
+ // Initially, the first widget should be visible.
+ assertTrue(labels[0].isVisible());
+ assertFalse(labels[1].isVisible());
+ assertFalse(labels[2].isVisible());
+
+ // Show widget at index 1, make sure it becomes visible
+ p.selectTab(1);
+ assertFalse(labels[0].isVisible());
+ assertTrue(labels[1].isVisible());
+ assertFalse(labels[2].isVisible());
+
+ // Show widget at index 0, make sure widget 1 is still visible
+ p.selectTab(0);
+ assertTrue(labels[0].isVisible());
+ assertFalse(labels[1].isVisible());
+ assertFalse(labels[2].isVisible());
+ }
+
+ /**
* Tests that tabs actually line up properly (see issue 4447).
*/
@DoNotRunWith(Platform.HtmlUnit)
--
http://groups.google.com/group/Google-Web-Toolkit-Contributors