summaryrefslogtreecommitdiffstats
path: root/policy/src
diff options
context:
space:
mode:
authorAdam Powell <adamp@google.com>2013-09-11 08:45:36 -0700
committerAdam Powell <adamp@google.com>2013-09-11 19:17:38 -0700
commit5fcf5b9fd3ff6757090c6bd166b60c18eda0b3ef (patch)
tree8f81a36c981493cdbbd88b10920d9302cfbad12e /policy/src
parent2f1ef77c07da2ed7168f75551dd632026b20f8cc (diff)
downloadframeworks_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.java16
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) {