diff options
author | Adam Powell <adamp@google.com> | 2013-09-11 08:45:36 -0700 |
---|---|---|
committer | Adam Powell <adamp@google.com> | 2013-09-11 19:17:38 -0700 |
commit | 5fcf5b9fd3ff6757090c6bd166b60c18eda0b3ef (patch) | |
tree | 8f81a36c981493cdbbd88b10920d9302cfbad12e /policy/src | |
parent | 2f1ef77c07da2ed7168f75551dd632026b20f8cc (diff) | |
download | frameworks_base-5fcf5b9fd3ff6757090c6bd166b60c18eda0b3ef.zip frameworks_base-5fcf5b9fd3ff6757090c6bd166b60c18eda0b3ef.tar.gz frameworks_base-5fcf5b9fd3ff6757090c6bd166b60c18eda0b3ef.tar.bz2 |
Show alternate menu panel on devices with menu key
Provide a softer transition to the overflow-everywhere world for
devices with menu keys. The panel menu will still be used on these
devices in response to a menu key press even in the presence of an
action bar with overflow.
Fix a few lingering bugs around dispatching the open-overflow
transition that caused problems with this along the way.
Change-Id: I9d77c70f6d15c47160ac06292984101d619c44e6
Diffstat (limited to 'policy/src')
-rw-r--r-- | policy/src/com/android/internal/policy/impl/PhoneWindow.java | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/policy/src/com/android/internal/policy/impl/PhoneWindow.java b/policy/src/com/android/internal/policy/impl/PhoneWindow.java index a3bd785..11913ee 100644 --- a/policy/src/com/android/internal/policy/impl/PhoneWindow.java +++ b/policy/src/com/android/internal/policy/impl/PhoneWindow.java @@ -22,6 +22,7 @@ import static android.view.ViewGroup.LayoutParams.MATCH_PARENT; import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT; import static android.view.WindowManager.LayoutParams.*; +import android.view.ViewConfiguration; import com.android.internal.view.RootViewSurfaceTaker; import com.android.internal.view.StandaloneActionMode; import com.android.internal.view.menu.ContextMenuBuilder; @@ -540,7 +541,8 @@ public class PhoneWindow extends Window implements MenuBuilder.Callback { @Override public final void openPanel(int featureId, KeyEvent event) { if (featureId == FEATURE_OPTIONS_PANEL && mActionBar != null && - mActionBar.isOverflowReserved()) { + mActionBar.isOverflowReserved() && + !ViewConfiguration.get(getContext()).hasPermanentMenuKey()) { if (mActionBar.getVisibility() == View.VISIBLE) { mActionBar.showOverflowMenu(); } @@ -549,7 +551,7 @@ public class PhoneWindow extends Window implements MenuBuilder.Callback { } } - private void openPanel(PanelFeatureState st, KeyEvent event) { + private void openPanel(final PanelFeatureState st, KeyEvent event) { // System.out.println("Open panel: isOpen=" + st.isOpen); // Already open, return @@ -673,7 +675,8 @@ public class PhoneWindow extends Window implements MenuBuilder.Callback { @Override public final void closePanel(int featureId) { if (featureId == FEATURE_OPTIONS_PANEL && mActionBar != null && - mActionBar.isOverflowReserved()) { + mActionBar.isOverflowReserved() && + !ViewConfiguration.get(getContext()).hasPermanentMenuKey()) { mActionBar.hideOverflowMenu(); } else if (featureId == FEATURE_CONTEXT_MENU) { closeContextMenu(); @@ -836,7 +839,8 @@ public class PhoneWindow extends Window implements MenuBuilder.Callback { boolean playSoundEffect = false; final PanelFeatureState st = getPanelState(featureId, true); if (featureId == FEATURE_OPTIONS_PANEL && mActionBar != null && - mActionBar.isOverflowReserved()) { + mActionBar.isOverflowReserved() && + !ViewConfiguration.get(getContext()).hasPermanentMenuKey()) { if (mActionBar.getVisibility() == View.VISIBLE) { if (!mActionBar.isOverflowMenuShowing()) { if (!isDestroyed() && preparePanel(st, event)) { @@ -1014,7 +1018,9 @@ public class PhoneWindow extends Window implements MenuBuilder.Callback { } private void reopenMenu(boolean toggleMenuMode) { - if (mActionBar != null && mActionBar.isOverflowReserved()) { + if (mActionBar != null && mActionBar.isOverflowReserved() && + (!ViewConfiguration.get(getContext()).hasPermanentMenuKey() || + mActionBar.isOverflowMenuShowPending())) { final Callback cb = getCallback(); if (!mActionBar.isOverflowMenuShowing() || !toggleMenuMode) { if (cb != null && !isDestroyed() && mActionBar.getVisibility() == View.VISIBLE) { |