Merge "Don't cache the ComboViewActivity"
diff --git a/res/layout-land/nav_screen.xml b/res/layout-land/nav_screen.xml
index 8e10f02..5a3a037 100644
--- a/res/layout-land/nav_screen.xml
+++ b/res/layout-land/nav_screen.xml
@@ -32,28 +32,14 @@
android:id="@+id/newtab"
android:layout_width="wrap_content"
android:layout_height="match_parent"
- android:paddingLeft="16dip"
- android:paddingRight="16dip"
style="@style/HoloButton"
android:gravity="center_vertical"
android:contentDescription="@string/accessibility_button_newtab"
android:src="@drawable/ic_new_window_holo_dark" />
<ImageButton
- android:id="@+id/newincognito"
- android:layout_width="wrap_content"
- android:layout_height="match_parent"
- android:paddingLeft="16dip"
- android:paddingRight="16dip"
- style="@style/HoloButton"
- android:gravity="center_vertical"
- android:contentDescription="@string/accessibility_button_newincognitotab"
- android:src="@drawable/ic_new_incognito_holo_dark" />
- <ImageButton
android:id="@+id/bookmarks"
android:layout_width="wrap_content"
android:layout_height="match_parent"
- android:paddingLeft="16dip"
- android:paddingRight="16dip"
android:contentDescription="@string/accessibility_button_bookmarks"
android:src="@drawable/ic_bookmarks_history_holo_dark"
style="@style/HoloButton" />
@@ -61,8 +47,8 @@
android:id="@+id/more"
android:layout_width="wrap_content"
android:layout_height="match_parent"
- android:paddingLeft="16dip"
- android:paddingRight="16dip"
+ android:paddingLeft="8dip"
+ android:paddingRight="8dip"
style="@style/HoloButton"
android:gravity="center_vertical"
android:contentDescription="@string/accessibility_button_more"
diff --git a/res/layout/nav_screen.xml b/res/layout/nav_screen.xml
index 8ff4be3..4e00fa3 100644
--- a/res/layout/nav_screen.xml
+++ b/res/layout/nav_screen.xml
@@ -37,28 +37,14 @@
android:id="@+id/newtab"
android:layout_width="wrap_content"
android:layout_height="match_parent"
- android:paddingLeft="16dip"
- android:paddingRight="16dip"
style="@style/HoloButton"
android:gravity="center_vertical"
android:contentDescription="@string/accessibility_button_newtab"
android:src="@drawable/ic_new_window_holo_dark" />
<ImageButton
- android:id="@+id/newincognito"
- android:layout_width="wrap_content"
- android:layout_height="match_parent"
- android:paddingLeft="16dip"
- android:paddingRight="16dip"
- style="@style/HoloButton"
- android:gravity="center_vertical"
- android:contentDescription="@string/accessibility_button_newincognitotab"
- android:src="@drawable/ic_new_incognito_holo_dark" />
- <ImageButton
android:id="@+id/bookmarks"
android:layout_width="wrap_content"
android:layout_height="match_parent"
- android:paddingLeft="16dip"
- android:paddingRight="16dip"
android:contentDescription="@string/accessibility_button_bookmarks"
android:src="@drawable/ic_bookmarks_history_holo_dark"
style="@style/HoloButton" />
@@ -66,8 +52,8 @@
android:id="@+id/more"
android:layout_width="wrap_content"
android:layout_height="match_parent"
- android:paddingLeft="16dip"
- android:paddingRight="16dip"
+ android:paddingLeft="8dip"
+ android:paddingRight="8dip"
style="@style/HoloButton"
android:gravity="center_vertical"
android:contentDescription="@string/accessibility_button_more"
diff --git a/res/menu/browser.xml b/res/menu/browser.xml
index 0b46db6..1de97f7 100644
--- a/res/menu/browser.xml
+++ b/res/menu/browser.xml
@@ -28,10 +28,18 @@
android:icon="@*android:drawable/ic_menu_forward" />
</group>
<item
+ android:id="@+id/new_tab_menu_id"
+ android:title="@string/menu_new_tab"
+ android:icon="@drawable/ic_new_window_holo_dark" />
+ <item
android:id="@+id/incognito_menu_id"
android:title="@string/incognito_tab"
android:icon="@drawable/ic_new_incognito_holo_dark" />
<item
+ android:id="@+id/bookmarks_menu_id"
+ android:title="@string/bookmarks"
+ android:icon="@drawable/ic_bookmarks_history_holo_dark" />
+ <item
android:id="@+id/add_bookmark_menu_id"
android:title="@string/save_to_bookmarks"
android:icon="@drawable/ic_bookmark_on_holo_dark"
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 4ed6c21..d9667bc 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -197,6 +197,8 @@
<string name="open_all_in_new_window">Open all in new windows</string>
<!-- Menu item to open a dialog which allows the user to enter a url or do search-->
<string name="goto_dot">Go</string>
+ <!-- Menu item that opens up a new tab. [CHAR LIMIT=30] -->
+ <string name="menu_new_tab">Open new tab</string>
<!-- Menu item that opens up a new incognito tab. [CHAR LIMIT=30] -->
<string name="incognito_tab">Open new incognito tab</string>
<!-- Menu item to switch to text selection mode for copy and paste. -->
diff --git a/src/com/android/browser/BaseUi.java b/src/com/android/browser/BaseUi.java
index 091126c..372f2a9 100644
--- a/src/com/android/browser/BaseUi.java
+++ b/src/com/android/browser/BaseUi.java
@@ -646,6 +646,10 @@
}
@Override
+ public void updateMenuState(Tab tab, Menu menu) {
+ }
+
+ @Override
public void onOptionsMenuOpened() {
}
diff --git a/src/com/android/browser/Controller.java b/src/com/android/browser/Controller.java
index fc4c35c..f20968b 100644
--- a/src/com/android/browser/Controller.java
+++ b/src/com/android/browser/Controller.java
@@ -1520,6 +1520,7 @@
MenuItem saveSnapshot = menu.findItem(R.id.save_snapshot_menu_id);
saveSnapshot.setVisible(tab != null && !tab.isSnapshot());
+ mUi.updateMenuState(tab, menu);
}
public boolean onOptionsItemSelected(MenuItem item) {
@@ -2301,6 +2302,7 @@
public void closeCurrentTab() {
if (mTabControl.getTabCount() == 1) {
mCrashRecoveryHandler.clearState();
+ mTabControl.removeTab(getCurrentTab());
mActivity.finish();
return;
}
diff --git a/src/com/android/browser/NavScreen.java b/src/com/android/browser/NavScreen.java
index 9c12ccf..face39e 100644
--- a/src/com/android/browser/NavScreen.java
+++ b/src/com/android/browser/NavScreen.java
@@ -52,7 +52,6 @@
ImageButton mBookmarks;
ImageButton mMore;
ImageButton mNewTab;
- ImageButton mNewIncognito;
FrameLayout mHolder;
TextView mTitle;
@@ -115,11 +114,9 @@
R.string.accessibility_transition_navscreen));
mBookmarks = (ImageButton) findViewById(R.id.bookmarks);
mNewTab = (ImageButton) findViewById(R.id.newtab);
- mNewIncognito = (ImageButton) findViewById(R.id.newincognito);
mMore = (ImageButton) findViewById(R.id.more);
mBookmarks.setOnClickListener(this);
mNewTab.setOnClickListener(this);
- mNewIncognito.setOnClickListener(this);
mMore.setOnClickListener(this);
mScroller = (NavTabGallery) findViewById(R.id.scroller);
mAdapter = new TabAdapter(mContext, mUiController.getTabControl());
@@ -160,9 +157,6 @@
openNewTab();
} else if (mMore == v) {
showMenu();
- } else if (mNewIncognito == v) {
- mUi.hideNavScreen(true);
- mUiController.openIncognitoTab();
} else if (mTitle == v) {
mUi.getTitleBar().setSkipTitleBarAnimations(true);
close(false);
diff --git a/src/com/android/browser/NavTabGallery.java b/src/com/android/browser/NavTabGallery.java
index 8247a5d..af02e8d 100644
--- a/src/com/android/browser/NavTabGallery.java
+++ b/src/com/android/browser/NavTabGallery.java
@@ -127,7 +127,7 @@
}
private void animateOut(final View v, float velocity) {
- if (mAnimator != null) return;
+ if ((v == null) || (mAnimator != null)) return;
final int position = mFirstPosition + indexOfChild(v);
int target = 0;
if (velocity < 0) {
@@ -151,7 +151,7 @@
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/PhoneUi.java b/src/com/android/browser/PhoneUi.java
index 853d935..901f5bd 100644
--- a/src/com/android/browser/PhoneUi.java
+++ b/src/com/android/browser/PhoneUi.java
@@ -164,11 +164,32 @@
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
- menu.setGroupVisible(R.id.NAV_MENU, (mNavScreen == null));
+ updateMenuState(mActiveTab, menu);
return true;
}
@Override
+ public void updateMenuState(Tab tab, Menu menu) {
+ menu.setGroupVisible(R.id.NAV_MENU, (mNavScreen == null));
+ MenuItem bm = menu.findItem(R.id.bookmarks_menu_id);
+ if (bm != null) {
+ bm.setVisible(mNavScreen == null);
+ }
+ MenuItem nt = menu.findItem(R.id.new_tab_menu_id);
+ if (nt != null) {
+ nt.setVisible(mNavScreen == null);
+ }
+ MenuItem find = menu.findItem(R.id.find_menu_id);
+ if (find != null) {
+ find.setVisible(((tab != null) && !tab.isSnapshot()));
+ }
+ MenuItem abm = menu.findItem(R.id.add_bookmark_menu_id);
+ if (abm != null) {
+ abm.setVisible((tab != null) && !tab.isSnapshot());
+ }
+ }
+
+ @Override
public boolean onOptionsItemSelected(MenuItem item) {
if (mNavScreen != null) {
hideNavScreen(false);
diff --git a/src/com/android/browser/UI.java b/src/com/android/browser/UI.java
index 2984d5c..bc4c0cf 100644
--- a/src/com/android/browser/UI.java
+++ b/src/com/android/browser/UI.java
@@ -99,6 +99,8 @@
public boolean onPrepareOptionsMenu(Menu menu);
+ public void updateMenuState(Tab tab, Menu menu);
+
public void onOptionsMenuOpened();
public void onExtendedMenuOpened();
diff --git a/src/com/android/browser/view/Gallery.java b/src/com/android/browser/view/Gallery.java
index 59e710d..78d4bc6 100644
--- a/src/com/android/browser/view/Gallery.java
+++ b/src/com/android/browser/view/Gallery.java
@@ -254,29 +254,27 @@
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();