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

Commit 98d8bdb2 authored by Mady Mellor's avatar Mady Mellor
Browse files

Don’t reset the menu state if the menu is showing during an update

Test: Manual - have a notification, schedule an update to it, show the
      menu, wait for the update, note that the menu is still visible
Bug: 38334364
Change-Id: Idcd49e4ffa4b422653a7090ae6365b8f404ec7b3
parent aff7c3c7
Loading
Loading
Loading
Loading
+11 −4
Original line number Diff line number Diff line
@@ -140,7 +140,7 @@ public class NotificationMenuRow implements NotificationMenuRowPlugin, View.OnCl
    @Override
    public void createMenu(ViewGroup parent) {
        mParent = (ExpandableNotificationRow) parent;
        createMenuViews();
        createMenuViews(true /* resetState */);
    }

    @Override
@@ -164,7 +164,7 @@ public class NotificationMenuRow implements NotificationMenuRowPlugin, View.OnCl
            // Menu hasn't been created yet, no need to do anything.
            return;
        }
        createMenuViews();
        createMenuViews(!isMenuVisible() /* resetState */);
    }

    @Override
@@ -179,7 +179,7 @@ public class NotificationMenuRow implements NotificationMenuRowPlugin, View.OnCl
        mParent.removeListener();
    }

    private void createMenuViews() {
    private void createMenuViews(boolean resetState) {
        // Filter the menu items based on the notification
        if (mParent != null && mParent.getStatusBarNotification() != null) {
            int flags = mParent.getStatusBarNotification().getNotification().flags;
@@ -201,7 +201,14 @@ public class NotificationMenuRow implements NotificationMenuRowPlugin, View.OnCl
        for (int i = 0; i < mMenuItems.size(); i++) {
            addMenuView(mMenuItems.get(i), mMenuContainer);
        }
        if (resetState) {
            resetState(false /* notify */);
        } else {
            mIconsPlaced = false;
            setMenuLocation();
            // If the # of items showing changed we need to update the snap position
            showMenu(mParent, mOnLeft ? getSpaceForMenu() : -getSpaceForMenu(), 0 /* velocity */);
        }
    }

    private void resetState(boolean notify) {