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

Commit 48ebce43 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Fixes issue where the notification menu was not visible after RTL changes"

parents 4678eca6 9d03a525
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -96,4 +96,7 @@ public interface NotificationMenuRowPlugin extends Plugin {
    public default boolean useDefaultMenuItems() {
        return false;
    }

    public default void onConfigurationChanged() {
    }
}
+8 −0
Original line number Diff line number Diff line
@@ -25,6 +25,7 @@ import android.animation.ValueAnimator.AnimatorUpdateListener;
import android.annotation.Nullable;
import android.content.Context;
import android.content.res.Resources;
import android.content.res.Configuration;
import android.graphics.drawable.AnimatedVectorDrawable;
import android.graphics.drawable.AnimationDrawable;
import android.graphics.drawable.ColorDrawable;
@@ -836,6 +837,13 @@ public class ExpandableNotificationRow extends ActivatableNotificationView
        onNotificationUpdated();
    }

    @Override
    public void onConfigurationChanged(Configuration newConfig) {
        if (mMenuRow.getMenuView() != null) {
            mMenuRow.onConfigurationChanged();
        }
    }

    public void setContentBackground(int customBackgroundColor, boolean animate,
            NotificationContentView notificationContentView) {
        if (getShowingLayout() == notificationContentView) {
+16 −10
Original line number Diff line number Diff line
@@ -165,6 +165,17 @@ public class NotificationMenuRow implements NotificationMenuRowPlugin, View.OnCl
        createMenuViews();
    }

    @Override
    public void onConfigurationChanged() {
        mParent.post(new Runnable() {
            @Override
            public void run() {
                mIconsPlaced = false; // Force icons to be re-placed
                setMenuLocation();
            }
        });
    }

    private void createMenuViews() {
        // Filter the menu items based on the notification
        if (mParent != null && mParent.getStatusBarNotification() != null) {
@@ -459,22 +470,17 @@ public class NotificationMenuRow implements NotificationMenuRowPlugin, View.OnCl

    private void setMenuLocation() {
        boolean showOnLeft = mTranslation > 0;
        if ((mIconsPlaced && showOnLeft == mOnLeft) || mSnapping || mParent == null) {
        if ((mIconsPlaced && showOnLeft == mOnLeft) || mSnapping
                || !mMenuContainer.isAttachedToWindow()) {
            // Do nothing
            return;
        }
        final boolean isRtl = mParent.isLayoutRtl();
        final int count = mMenuContainer.getChildCount();
        final int width = mParent.getWidth();
        for (int i = 0; i < count; i++) {
            final View v = mMenuContainer.getChildAt(i);
            final float left = isRtl
                    ? -(width - mHorizSpaceForIcon * (i + 1))
                    : i * mHorizSpaceForIcon;
            final float right = isRtl
                    ? -i * mHorizSpaceForIcon
                    : width - (mHorizSpaceForIcon * (i + 1));
            v.setTranslationX(showOnLeft ? left : right);
            final float left = i * mHorizSpaceForIcon;
            final float right = mParent.getWidth() - (mHorizSpaceForIcon * (i + 1));
            v.setX(showOnLeft ? left : right);
        }
        mOnLeft = showOnLeft;
        mIconsPlaced = true;