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

Commit 51dfd53f authored by Lucas Dupin's avatar Lucas Dupin
Browse files

Only relayout when mIgnoredSlots changes

This avoids relayouting sysui when calling add/removeIgnoredSlot has no
effect.

Bug: 190379081
Test: https://ui.perfetto.dev/#!/viewer?trace_id=c57e4aca-d306-66b0-df47-009944328158
Change-Id: I9e5d5c3bfe20c8df10b779e39cdab39ebf95573b
parent ee754300
Loading
Loading
Loading
Loading
+28 −12
Original line number Diff line number Diff line
@@ -217,26 +217,38 @@ public class StatusIconContainer extends AlphaOptimizedLinearLayout {
     * frameworks/base/core/res/res/values/config.xml
     */
    public void addIgnoredSlot(String slotName) {
        addIgnoredSlotInternal(slotName);
        boolean added = addIgnoredSlotInternal(slotName);
        if (added) {
            requestLayout();
        }
    }

    /**
     * Add a list of slots to be ignored
     * @param slots names of the icons to ignore
     */
    public void addIgnoredSlots(List<String> slots) {
        boolean willAddAny = false;
        for (String slot : slots) {
            addIgnoredSlotInternal(slot);
            willAddAny |= addIgnoredSlotInternal(slot);
        }

        if (willAddAny) {
            requestLayout();
        }
    }

    private void addIgnoredSlotInternal(String slotName) {
        if (!mIgnoredSlots.contains(slotName)) {
            mIgnoredSlots.add(slotName);
    /**
     *
     * @param slotName
     * @return
     */
    private boolean addIgnoredSlotInternal(String slotName) {
        if (mIgnoredSlots.contains(slotName)) {
            return false;
        }
        mIgnoredSlots.add(slotName);
        return true;
    }

    /**
@@ -245,10 +257,11 @@ public class StatusIconContainer extends AlphaOptimizedLinearLayout {
     * @param slotName name of the icon slot to remove from the ignored list
     */
    public void removeIgnoredSlot(String slotName) {
        mIgnoredSlots.remove(slotName);

        boolean removed = mIgnoredSlots.remove(slotName);
        if (removed) {
            requestLayout();
        }
    }

    /**
     * Remove a list of slots from the list of ignored icon slots.
@@ -256,12 +269,15 @@ public class StatusIconContainer extends AlphaOptimizedLinearLayout {
     * @param slots name of the icon slots to remove from the ignored list
     */
    public void removeIgnoredSlots(List<String> slots) {
        boolean removedAny = false;
        for (String slot : slots) {
            mIgnoredSlots.remove(slot);
            removedAny |= mIgnoredSlots.remove(slot);
        }

        if (removedAny) {
            requestLayout();
        }
    }

    /**
     * Sets the list of ignored icon slots clearing the current list.