diff options
| author | Adam Powell <adamp@google.com> | 2011-08-03 12:06:32 -0700 |
|---|---|---|
| committer | Adam Powell <adamp@google.com> | 2011-08-03 12:07:30 -0700 |
| commit | 6b0e97c7c48cf9446c7d4bc1b37d4c37d78433b0 (patch) | |
| tree | 64ac9669cb5bad3a8bab0c320505a758801a67d6 /core/java | |
| parent | 62c7b37590b1a692384a55949d3b9eba221a3652 (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.java | 16 | ||||
| -rw-r--r-- | core/java/com/android/internal/widget/ActionBarView.java | 5 |
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; } |
