summaryrefslogtreecommitdiff
path: root/core/java
diff options
context:
space:
mode:
authorAdam Powell <adamp@google.com>2011-08-03 12:06:32 -0700
committerAdam Powell <adamp@google.com>2011-08-03 12:07:30 -0700
commit6b0e97c7c48cf9446c7d4bc1b37d4c37d78433b0 (patch)
tree64ac9669cb5bad3a8bab0c320505a758801a67d6 /core/java
parent62c7b37590b1a692384a55949d3b9eba221a3652 (diff)
Fix bug 5093394 - Double SearchView!! What does it mean!?
It means we should collapse any expanded action items when we clear out all items from a MenuBuilder. Change-Id: I59cacd862a89b3a50c61b02c64b1ea71907af83f
Diffstat (limited to 'core/java')
-rw-r--r--core/java/com/android/internal/view/menu/MenuBuilder.java16
-rw-r--r--core/java/com/android/internal/widget/ActionBarView.java5
2 files changed, 17 insertions, 4 deletions
diff --git a/core/java/com/android/internal/view/menu/MenuBuilder.java b/core/java/com/android/internal/view/menu/MenuBuilder.java
index 7839a0847619..5e70e4c3f7c5 100644
--- a/core/java/com/android/internal/view/menu/MenuBuilder.java
+++ b/core/java/com/android/internal/view/menu/MenuBuilder.java
@@ -150,6 +150,11 @@ public class MenuBuilder implements Menu {
private CopyOnWriteArrayList<WeakReference<MenuPresenter>> mPresenters =
new CopyOnWriteArrayList<WeakReference<MenuPresenter>>();
+
+ /**
+ * Currently expanded menu item; must be collapsed when we clear.
+ */
+ private MenuItemImpl mExpandedItem;
/**
* Called by menu to notify of close and selection changes.
@@ -512,6 +517,9 @@ public class MenuBuilder implements Menu {
}
public void clear() {
+ if (mExpandedItem != null) {
+ collapseItemActionView(mExpandedItem);
+ }
mItems.clear();
onItemsChanged(true);
@@ -1223,11 +1231,14 @@ public class MenuBuilder implements Menu {
}
startDispatchingItemsChanged();
+ if (expanded) {
+ mExpandedItem = item;
+ }
return expanded;
}
public boolean collapseItemActionView(MenuItemImpl item) {
- if (mPresenters.isEmpty()) return false;
+ if (mPresenters.isEmpty() || mExpandedItem != item) return false;
boolean collapsed = false;
@@ -1242,6 +1253,9 @@ public class MenuBuilder implements Menu {
}
startDispatchingItemsChanged();
+ if (collapsed) {
+ mExpandedItem = null;
+ }
return collapsed;
}
}
diff --git a/core/java/com/android/internal/widget/ActionBarView.java b/core/java/com/android/internal/widget/ActionBarView.java
index 446c842d7e69..4878b0f088ac 100644
--- a/core/java/com/android/internal/widget/ActionBarView.java
+++ b/core/java/com/android/internal/widget/ActionBarView.java
@@ -1265,9 +1265,8 @@ public class ActionBarView extends AbsActionBarView {
@Override
public void initForMenu(Context context, MenuBuilder menu) {
// Clear the expanded action view when menus change.
- mExpandedActionView = null;
- if (mCurrentExpandedItem != null) {
- mCurrentExpandedItem.collapseActionView();
+ if (mMenu != null && mCurrentExpandedItem != null) {
+ mMenu.collapseItemActionView(mCurrentExpandedItem);
}
mMenu = menu;
}