Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5454be00 authored by Deepanshu Gupta's avatar Deepanshu Gupta Committed by Android Git Automerger
Browse files

am 5dae7fda: am 9359dc2e: am 2d3fa7ba: Support actionProviderClass attribute...

am 5dae7fda: am 9359dc2e: am 2d3fa7ba: Support actionProviderClass attribute for menus [DO NOT MERGE]

* commit '5dae7fda':
  Support actionProviderClass attribute for menus [DO NOT MERGE]
parents d388afad 5dae7fda
Loading
Loading
Loading
Loading
+22 −1
Original line number Diff line number Diff line
@@ -16,6 +16,12 @@

package com.android.internal.view.menu;

import com.android.layoutlib.bridge.android.BridgeContext;

import android.content.Context;
import android.view.ContextThemeWrapper;
import android.view.View;

/**
 * An extension of the {@link MenuItemImpl} to store the view cookie also.
 */
@@ -27,6 +33,7 @@ public class BridgeMenuItemImpl extends MenuItemImpl {
     * at the time of rendering.
     */
    private Object viewCookie;
    private BridgeContext mContext;

    /**
     * Instantiates this menu item.
@@ -34,14 +41,28 @@ public class BridgeMenuItemImpl extends MenuItemImpl {
    BridgeMenuItemImpl(MenuBuilder menu, int group, int id, int categoryOrder, int ordering,
            CharSequence title, int showAsAction) {
        super(menu, group, id, categoryOrder, ordering, title, showAsAction);
        Context context = menu.getContext();
        if (context instanceof ContextThemeWrapper) {
            context = ((ContextThemeWrapper) context).getBaseContext();
        }
        if (context instanceof BridgeContext) {
            mContext = ((BridgeContext) context);
        }
    }


    public Object getViewCookie() {
        return viewCookie;
    }

    public void setViewCookie(Object viewCookie) {
        // If the menu item has an associated action provider view,
        // directly set the cookie in the view to cookie map stored in BridgeContext.
        View actionView = getActionView();
        if (actionView != null && mContext != null) {
            mContext.addViewKey(actionView, viewCookie);
            // We don't need to add the view cookie to the this item now. But there's no harm in
            // storing it, in case we need it in the future.
        }
        this.viewCookie = viewCookie;
    }
}
+4 −2
Original line number Diff line number Diff line
@@ -26,6 +26,7 @@ import com.android.ide.common.rendering.api.SystemViewCookie;
import com.android.internal.R;
import com.android.internal.app.ActionBarImpl;
import com.android.internal.util.Predicate;
import com.android.internal.view.menu.ActionMenuView;
import com.android.internal.view.menu.MenuBuilder;
import com.android.internal.view.menu.MenuBuilderAccessor;
import com.android.internal.view.menu.MenuItemImpl;
@@ -180,8 +181,9 @@ public class ActionBarLayout extends LinearLayout {
            Predicate<View> overflowMenuButtonTest = new Predicate<View>() {
                @Override
                public boolean apply(View view) {
                    return view.getClass().getName()
                            .equals("android.widget.ActionMenuPresenter$OverflowMenuButton");
                    ViewGroup.LayoutParams lp = view.getLayoutParams();
                    return lp instanceof ActionMenuView.LayoutParams &&
                            ((ActionMenuView.LayoutParams) lp).isOverflowButton;
                }
            };
            View overflowMenu = null;