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

Reply via email to