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

Commit 1ecb461b authored by Adam Powell's avatar Adam Powell Committed by Android Git Automerger
Browse files

am e6564ea8: Merge "Fix bug 3178934 - Make MenuBuilder notify its adapters of...

am e6564ea8: Merge "Fix bug 3178934 - Make MenuBuilder notify its adapters of changes" into honeycomb

* commit 'e6564ea8':
  Fix bug 3178934 - Make MenuBuilder notify its adapters of changes
parents 67e95052 e6564ea8
Loading
Loading
Loading
Loading
+27 −7
Original line number Diff line number Diff line
@@ -215,6 +215,11 @@ public class MenuBuilder implements Menu {

    private ViewGroup mMeasureActionButtonParent;

    private final WeakReference<MenuAdapter>[] mAdapterCache =
            new WeakReference[NUM_TYPES];
    private final WeakReference<OverflowMenuAdapter>[] mOverflowAdapterCache =
            new WeakReference[NUM_TYPES];

    // Group IDs that have been added as actions - used temporarily, allocated here for reuse.
    private final SparseBooleanArray mActionButtonGroups = new SparseBooleanArray();

@@ -1004,6 +1009,12 @@ public class MenuBuilder implements Menu {
                    MenuView menuView = menuTypes[i].mMenuView.get();
                    menuView.updateChildren(cleared);
                }

                MenuAdapter adapter = mAdapterCache[i] == null ? null : mAdapterCache[i].get();
                if (adapter != null) adapter.notifyDataSetChanged();

                adapter = mOverflowAdapterCache[i] == null ? null : mOverflowAdapterCache[i].get();
                if (adapter != null) adapter.notifyDataSetChanged();
            }
        }
    }
@@ -1358,7 +1369,13 @@ public class MenuBuilder implements Menu {
     * @return A {@link MenuAdapter} for this menu with the given menu type.
     */
    public MenuAdapter getMenuAdapter(int menuType) {
        return new MenuAdapter(menuType);
        MenuAdapter adapter = mAdapterCache[menuType] == null ?
                null : mAdapterCache[menuType].get();
        if (adapter != null) return adapter;

        adapter = new MenuAdapter(menuType);
        mAdapterCache[menuType] = new WeakReference<MenuAdapter>(adapter);
        return adapter;
    }

    /**
@@ -1368,7 +1385,13 @@ public class MenuBuilder implements Menu {
     * @return A {@link MenuAdapter} for this menu with the given menu type.
     */
    public MenuAdapter getOverflowMenuAdapter(int menuType) {
        return new OverflowMenuAdapter(menuType);
        OverflowMenuAdapter adapter = mOverflowAdapterCache[menuType] == null ?
                null : mOverflowAdapterCache[menuType].get();
        if (adapter != null) return adapter;

        adapter = new OverflowMenuAdapter(menuType);
        mOverflowAdapterCache[menuType] = new WeakReference<OverflowMenuAdapter>(adapter);
        return adapter;
    }

    void setOptionalIconsVisible(boolean visible) {
@@ -1469,21 +1492,18 @@ public class MenuBuilder implements Menu {
     * source for overflow menu items that do not fit in the list of action items.
     */
    private class OverflowMenuAdapter extends MenuAdapter {
        private ArrayList<MenuItemImpl> mOverflowItems;

        public OverflowMenuAdapter(int menuType) {
            super(menuType);
            mOverflowItems = getNonActionItems(true);
        }

        @Override
        public MenuItemImpl getItem(int position) {
            return mOverflowItems.get(position);
            return getNonActionItems(true).get(position);
        }

        @Override
        public int getCount() {
            return mOverflowItems.size();
            return getNonActionItems(true).size();
        }
    }
}