diff options
author | Adam Powell <adamp@google.com> | 2013-11-01 18:22:11 -0700 |
---|---|---|
committer | Adam Powell <adamp@google.com> | 2013-11-01 18:22:11 -0700 |
commit | b411b32861e7794a59fa7558dbe9d97407eccf23 (patch) | |
tree | 5637200ee32a1ce0f943a787373504255520f033 /core/java/com | |
parent | efcc2ca63dfa9179979ecdc86031c06240ada1c5 (diff) | |
download | frameworks_base-b411b32861e7794a59fa7558dbe9d97407eccf23.zip frameworks_base-b411b32861e7794a59fa7558dbe9d97407eccf23.tar.gz frameworks_base-b411b32861e7794a59fa7558dbe9d97407eccf23.tar.bz2 |
Fix action menu visibility callbacks for nested popups
When opening a submenu from a popup in ActionMenuPresenter, delegate
the submenu callbacks to the presenter callback registered on the
ActionMenuPresenter. This allows menu visibility callbacks to
propagate properly so that apps that hide their action bars after a
timeout can detect open menus that are deeply nested.
Bug 11429613
Change-Id: I3332886f08d4f9010f0875057c457566301d12ec
Diffstat (limited to 'core/java/com')
-rw-r--r-- | core/java/com/android/internal/view/menu/ActionMenuPresenter.java | 7 | ||||
-rw-r--r-- | core/java/com/android/internal/view/menu/BaseMenuPresenter.java | 4 |
2 files changed, 10 insertions, 1 deletions
diff --git a/core/java/com/android/internal/view/menu/ActionMenuPresenter.java b/core/java/com/android/internal/view/menu/ActionMenuPresenter.java index 44e7ec1..4654178 100644 --- a/core/java/com/android/internal/view/menu/ActionMenuPresenter.java +++ b/core/java/com/android/internal/view/menu/ActionMenuPresenter.java @@ -721,7 +721,8 @@ public class ActionMenuPresenter extends BaseMenuPresenter if (subMenu == null) return false; mOpenSubMenuId = ((SubMenuBuilder) subMenu).getItem().getItemId(); - return false; + final MenuPresenter.Callback cb = getCallback(); + return cb != null ? cb.onOpenSubMenu(subMenu) : false; } @Override @@ -729,6 +730,10 @@ public class ActionMenuPresenter extends BaseMenuPresenter if (menu instanceof SubMenuBuilder) { ((SubMenuBuilder) menu).getRootMenu().close(false); } + final MenuPresenter.Callback cb = getCallback(); + if (cb != null) { + cb.onCloseMenu(menu, allMenusAreClosing); + } } } diff --git a/core/java/com/android/internal/view/menu/BaseMenuPresenter.java b/core/java/com/android/internal/view/menu/BaseMenuPresenter.java index db0d6dd..92e9ea6 100644 --- a/core/java/com/android/internal/view/menu/BaseMenuPresenter.java +++ b/core/java/com/android/internal/view/menu/BaseMenuPresenter.java @@ -144,6 +144,10 @@ public abstract class BaseMenuPresenter implements MenuPresenter { mCallback = cb; } + public Callback getCallback() { + return mCallback; + } + /** * Create a new item view that can be re-bound to other item data later. * |