summaryrefslogtreecommitdiff
path: root/src/com/android/browser/TabControl.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/browser/TabControl.java')
-rw-r--r--src/com/android/browser/TabControl.java16
1 files changed, 12 insertions, 4 deletions
diff --git a/src/com/android/browser/TabControl.java b/src/com/android/browser/TabControl.java
index 5b5493f0..5e64a4b2 100644
--- a/src/com/android/browser/TabControl.java
+++ b/src/com/android/browser/TabControl.java
@@ -192,18 +192,26 @@ class TabControl {
return false;
}
- // Only remove the tab if it is the current one.
- if (getCurrentTab() == t) {
+ // Grab the current tab before modifying the list.
+ Tab current = getCurrentTab();
+
+ // Remove t from our list of tabs.
+ mTabs.remove(t);
+
+ // Put the tab in the background only if it is the current one.
+ if (current == t) {
t.putInBackground();
mCurrentTab = -1;
+ } else {
+ // If a tab that is earlier in the list gets removed, the current
+ // index no longer points to the correct tab.
+ mCurrentTab = getTabIndex(current);
}
// destroy the tab
t.destroy();
// clear it's references to parent and children
t.removeFromTree();
- // Remove it from our list of tabs.
- mTabs.remove(t);
// The tab indices have shifted, update all the saved state so we point
// to the correct index.