Don't show icons for top level menus unless forced.

Prior to this CL, the cascading implementation would evaluate the
contents of the menu to determine whether to show an icon for this case.
However, the policy we have upheld is that top level menus should
never show an icon for this case. (Unless setForceShowIcon(true) was
called.)

Bug: 28275346
Change-Id: I09423596d49742aa7a9ba7245702c099581c0b48
This commit is contained in:
Oren Blasberg
2016-04-19 15:44:46 -07:00
parent 6ed4e35e49
commit 7b457455c4
2 changed files with 9 additions and 9 deletions

View File

@@ -347,21 +347,18 @@ final class CascadingMenuPopup extends MenuPopup implements MenuPresenter, OnKey
final LayoutInflater inflater = LayoutInflater.from(mContext);
final MenuAdapter adapter = new MenuAdapter(menu, inflater, mOverflowOnly);
// Apply "force show icon" setting. There are 4 cases:
// (1) This is the top level menu. Only add spacing for icons if forced.
// Apply "force show icon" setting. There are 3 cases:
// (1) This is the top level menu and icon spacing is forced. Add spacing.
// (2) This is a submenu. Add spacing if any of the visible menu items has an icon.
// (3) This is a top level menu that is not an overflow menu. Add spacing if any of the
// visible menu items has an icon.
// (4) This is an overflow menu or a top level menu that doesn't have "force" set.
// Don't allow spacing.
// (3) This is the top level menu and icon spacing isn't forced. Do not add spacing.
if (!isShowing() && mForceShowIcon) {
// Case 1
adapter.setForceShowIcon(true);
} else if (isShowing() || !isShowing() && !mForceShowIcon && !mOverflowOnly) {
// Case 2 or 3
} else if (isShowing()) {
// Case 2
adapter.setForceShowIcon(MenuPopup.shouldPreserveIconSpacing(menu));
}
// Case 4: Else, don't allow spacing for icons.
// Case 3: Else, don't allow spacing for icons (default behavior; do nothing).
final int menuWidth = measureIndividualMenuWidth(adapter, null, mContext, mMenuMaxWidth);
final MenuPopupWindow popupWindow = createPopupWindow();

View File

@@ -104,6 +104,9 @@ public class MenuPopupHelper implements MenuHelper {
*/
public void setForceShowIcon(boolean forceShowIcon) {
mForceShowIcon = forceShowIcon;
if (mPopup != null) {
mPopup.setForceShowIcon(forceShowIcon);
}
}
/**