From 8d12e201626239291fe2c4b31f97f2a14f01dea9 Mon Sep 17 00:00:00 2001 From: Adam Powell Date: Mon, 15 Nov 2010 16:44:17 -0800 Subject: [PATCH] Fix a couple interactions between action bar and options menus Fix bug 3129937 - Activity.openOptionsMenu not calling onPrepareOptionsMenu Fix bug 3070720 - actionbar android.R.id.home isn't dispatched to fragments Change-Id: I4a154941595583cdec7d1dffbeac9c8340781fa0 --- core/java/com/android/internal/widget/ActionBarView.java | 3 ++- policy/src/com/android/internal/policy/impl/PhoneWindow.java | 2 ++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/core/java/com/android/internal/widget/ActionBarView.java b/core/java/com/android/internal/widget/ActionBarView.java index 0a4f5436018a2..e18f58f17b863 100644 --- a/core/java/com/android/internal/widget/ActionBarView.java +++ b/core/java/com/android/internal/widget/ActionBarView.java @@ -40,6 +40,7 @@ import android.view.Menu; import android.view.View; import android.view.ViewGroup; import android.view.ViewParent; +import android.view.Window; import android.widget.AdapterView; import android.widget.HorizontalScrollView; import android.widget.ImageView; @@ -219,7 +220,7 @@ public class ActionBarView extends ViewGroup { Context context = getContext(); if (context instanceof Activity) { Activity activity = (Activity) context; - activity.onOptionsItemSelected(mLogoNavItem); + activity.onMenuItemSelected(Window.FEATURE_OPTIONS_PANEL, mLogoNavItem); } } }); diff --git a/policy/src/com/android/internal/policy/impl/PhoneWindow.java b/policy/src/com/android/internal/policy/impl/PhoneWindow.java index e99b74f98b40b..3dd651040d77e 100644 --- a/policy/src/com/android/internal/policy/impl/PhoneWindow.java +++ b/policy/src/com/android/internal/policy/impl/PhoneWindow.java @@ -411,6 +411,8 @@ public class PhoneWindow extends Window implements MenuBuilder.Callback { public final void openPanel(int featureId, KeyEvent event) { if (featureId == FEATURE_OPTIONS_PANEL && mActionBar != null && mActionBar.isOverflowReserved()) { + // Invalidate the options menu, we want a prepare event that the app can respond to. + invalidatePanelMenu(FEATURE_OPTIONS_PANEL); mActionBar.showOverflowMenu(); } else { openPanel(getPanelState(featureId, true), event);