Fix for issue 4595: "In TabLayoutPanel, inserting a tab before the currently
selected tab causes problems due to not incrementing selectedIndex".
Review at http://gwt-code-reviews.appspot.com/153816
git-svn-id: https://google-web-toolkit.googlecode.com/svn/trunk@7633 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/user/src/com/google/gwt/user/client/ui/TabLayoutPanel.java b/user/src/com/google/gwt/user/client/ui/TabLayoutPanel.java
index 7b51a70..961bb0f 100644
--- a/user/src/com/google/gwt/user/client/ui/TabLayoutPanel.java
+++ b/user/src/com/google/gwt/user/client/ui/TabLayoutPanel.java
@@ -474,6 +474,10 @@
if (selectedIndex == -1) {
selectTab(0);
+ } else if (selectedIndex >= beforeIndex) {
+ // If we inserted before the currently selected tab, its index has just
+ // increased.
+ selectedIndex++;
}
}
diff --git a/user/test/com/google/gwt/user/client/ui/TabLayoutPanelTest.java b/user/test/com/google/gwt/user/client/ui/TabLayoutPanelTest.java
index 5962d09..e8c9f57 100644
--- a/user/test/com/google/gwt/user/client/ui/TabLayoutPanelTest.java
+++ b/user/test/com/google/gwt/user/client/ui/TabLayoutPanelTest.java
@@ -59,6 +59,14 @@
HasWidgetsTester.testAll(new TabLayoutPanel(1, Unit.EM), new Adder(), true);
}
+ public void testInsertBeforeSelected() {
+ TabLayoutPanel p = new TabLayoutPanel(2, Unit.EM);
+ p.add(new Label("foo"), "foo");
+ p.selectTab(0);
+ p.insert(new Label("bar"), "bar", 0);
+ assertEquals(1, p.getSelectedIndex());
+ }
+
public void testInsertMultipleTimes() {
TabLayoutPanel p = new TabLayoutPanel(2, Unit.EM);