Index: chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenu.java |
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenu.java b/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenu.java |
index 94fe6e3489884beedfcff05708415df7a8e288a3..6f7f5733db21138c46f76bef09ca54a7f59ae42d 100644 |
--- a/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenu.java |
+++ b/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenu.java |
@@ -37,7 +37,7 @@ import java.util.List; |
*/ |
public class AppMenu implements OnItemClickListener, OnKeyListener { |
/** Whether or not to show the software menu button in the menu. */ |
- private static final boolean SHOW_SW_MENU_BUTTON = false; |
+ private static final boolean SHOW_SW_MENU_BUTTON = true; |
private static final float LAST_ITEM_SHOW_FRACTION = 0.5f; |
@@ -45,7 +45,6 @@ public class AppMenu implements OnItemClickListener, OnKeyListener { |
private final int mItemRowHeight; |
private final int mItemDividerHeight; |
private final int mVerticalFadeDistance; |
- private final int mAdditionalVerticalOffset; |
private ListPopupWindow mPopup; |
private AppMenuAdapter mAdapter; |
private AppMenuHandler mHandler; |
@@ -72,7 +71,6 @@ public class AppMenu implements OnItemClickListener, OnKeyListener { |
mItemDividerHeight = itemDividerHeight; |
assert mItemDividerHeight >= 0; |
- mAdditionalVerticalOffset = res.getDimensionPixelSize(R.dimen.menu_vertical_offset); |
mVerticalFadeDistance = res.getDimensionPixelSize(R.dimen.menu_vertical_fade_distance); |
} |
@@ -105,7 +103,13 @@ public class AppMenu implements OnItemClickListener, OnKeyListener { |
// Need to explicitly set the background here. Relying on it being set in the style caused |
// an incorrectly drawn background. |
- mPopup.setBackgroundDrawable(context.getResources().getDrawable(R.drawable.menu_bg)); |
+ if (isByHardwareButton) { |
+ mPopup.setBackgroundDrawable(context.getResources().getDrawable(R.drawable.menu_bg)); |
+ } else { |
+ mPopup.setBackgroundDrawable( |
+ context.getResources().getDrawable(R.drawable.edge_menu_bg)); |
+ mPopup.setAnimationStyle(R.style.OverflowMenuAnim); |
+ } |
Rect bgPadding = new Rect(); |
mPopup.getBackground().getPadding(bgPadding); |
@@ -165,6 +169,7 @@ public class AppMenu implements OnItemClickListener, OnKeyListener { |
popup.getBackground().getPadding(paddingRect); |
int[] anchorLocation = new int[2]; |
popup.getAnchorView().getLocationInWindow(anchorLocation); |
+ int anchorHeight = popup.getAnchorView().getHeight(); |
// If we have a hardware menu button, locate the app menu closer to the estimated |
// hardware menu button location. |
@@ -187,11 +192,11 @@ public class AppMenu implements OnItemClickListener, OnKeyListener { |
popup.setHorizontalOffset(horizontalOffset); |
// The menu is displayed above the anchored view, so shift the menu up by the top |
// padding of the background. |
- popup.setVerticalOffset(mAdditionalVerticalOffset - paddingRect.bottom); |
+ popup.setVerticalOffset(-paddingRect.bottom); |
} else { |
- // The menu is displayed below the anchored view, so shift the menu up by the top |
- // padding of the background. |
- popup.setVerticalOffset(mAdditionalVerticalOffset - paddingRect.top); |
+ // The menu is displayed over and below the anchored view, so shift the menu up by the |
+ // height of the anchor view. |
+ popup.setVerticalOffset(-anchorHeight); |
} |
} |
@@ -264,9 +269,10 @@ public class AppMenu implements OnItemClickListener, OnKeyListener { |
int[] anchorViewLocation = new int[2]; |
anchorView.getLocationOnScreen(anchorViewLocation); |
anchorViewLocation[1] -= appDimensions.top; |
+ int anchorViewImpactHeight = mIsByHardwareButton ? anchorView.getHeight() : 0; |
int availableScreenSpace = Math.max(anchorViewLocation[1], |
- appDimensions.height() - anchorViewLocation[1] - anchorView.getHeight()); |
+ appDimensions.height() - anchorViewLocation[1] - anchorViewImpactHeight); |
Rect padding = new Rect(); |
mPopup.getBackground().getPadding(padding); |