diff options
| author | Michael Kolb <kolby@google.com> | 2011-08-01 09:56:26 -0700 |
|---|---|---|
| committer | Michael Kolb <kolby@google.com> | 2011-08-01 10:32:19 -0700 |
| commit | c1eeb12b6e4570520c3571aba9c04be91b4a20d5 (patch) | |
| tree | d851a5fea7f68c9f151231446c3b5f0d449fc837 /src/com/android | |
| parent | bf4dc0a894c4bec72ffb840de769ee01ff579932 (diff) | |
| download | packages_apps_Browser-c1eeb12b6e4570520c3571aba9c04be91b4a20d5.tar.gz packages_apps_Browser-c1eeb12b6e4570520c3571aba9c04be91b4a20d5.tar.bz2 packages_apps_Browser-c1eeb12b6e4570520c3571aba9c04be91b4a20d5.zip | |
fix last tab close bug
Bug: 5098467
The controller did not update the tab list correctly
and called activity finish instead. The adapter
got updated and showed the last tab still
Now the controller removes the last tab before
calling finish, so the visible update to the tab
list is correct.
Change-Id: Idf29dff7d60181c63f6b3ebcbc8a1562f027b2c1
Diffstat (limited to 'src/com/android')
| -rw-r--r-- | src/com/android/browser/Controller.java | 1 | ||||
| -rw-r--r-- | src/com/android/browser/NavTabGallery.java | 2 | ||||
| -rw-r--r-- | src/com/android/browser/view/Gallery.java | 44 |
3 files changed, 23 insertions, 24 deletions
diff --git a/src/com/android/browser/Controller.java b/src/com/android/browser/Controller.java index fc4c35cc8..457c2e0b6 100644 --- a/src/com/android/browser/Controller.java +++ b/src/com/android/browser/Controller.java @@ -2301,6 +2301,7 @@ public class Controller public void closeCurrentTab() { if (mTabControl.getTabCount() == 1) { mCrashRecoveryHandler.clearState(); + mTabControl.removeTab(getCurrentTab()); mActivity.finish(); return; } diff --git a/src/com/android/browser/NavTabGallery.java b/src/com/android/browser/NavTabGallery.java index 8247a5d9b..8aa27825a 100644 --- a/src/com/android/browser/NavTabGallery.java +++ b/src/com/android/browser/NavTabGallery.java @@ -151,7 +151,7 @@ public class NavTabGallery extends Gallery { setGapPosition(position, mHorizontal ? v.getWidth() : v.getHeight()); } mRemoveListener.onRemovePosition(position); - if (!needsGap && position > 0) { + if (!needsGap && (position > 0) && (mAdapter.getCount() > 0)) { scrollToChild(position - 1); } mAnimator = null; diff --git a/src/com/android/browser/view/Gallery.java b/src/com/android/browser/view/Gallery.java index 59e710db0..78d4bc6b4 100644 --- a/src/com/android/browser/view/Gallery.java +++ b/src/com/android/browser/view/Gallery.java @@ -254,29 +254,27 @@ public class Gallery extends ViewGroup implements resetList(); mItemCount = mAdapter.getCount(); // checkFocus(); - int position = mItemCount > 0 ? 0 : INVALID_POSITION; - if (mSelectedPosition >= 0) { - position = Math.min(mItemCount - 1, mSelectedPosition); - } - setSelectedPositionInt(position); - if (mItemCount == 0) { - // Nothing selected - checkSelectionChanged(); - } - if (mGapPosition > INVALID_POSITION) { - mGapAnimator = ObjectAnimator.ofInt(this, "gap", mGap, 0); - mGapAnimator.setDuration(250); - mGapAnimator.addListener(new AnimatorListenerAdapter() { - @Override - public void onAnimationEnd(Animator a) { - mGapPosition = INVALID_POSITION; - mGap = 0; - mGapAnimator = null; - } - }); - mGapAnimator.start(); - } else { - layout(0, false); + if (mItemCount > 0) { + int position = 0; + if (mSelectedPosition >= 0) { + position = Math.min(mItemCount - 1, mSelectedPosition); + } + setSelectedPositionInt(position); + if (mGapPosition > INVALID_POSITION) { + mGapAnimator = ObjectAnimator.ofInt(this, "gap", mGap, 0); + mGapAnimator.setDuration(250); + mGapAnimator.addListener(new AnimatorListenerAdapter() { + @Override + public void onAnimationEnd(Animator a) { + mGapPosition = INVALID_POSITION; + mGap = 0; + mGapAnimator = null; + } + }); + mGapAnimator.start(); + } else { + layout(0, false); + } } } else { // checkFocus(); |
