Only do things if the window inset changed

Test: manual - expand the stack, select the overflow,
               collapse the stack
             => verify that there isn't a weird animation
Bug: 199781565
Change-Id: I408ae5e32a0f9f335fda6a6743134bc52e348d4e
This commit is contained in:
Mady Mellor
2021-09-14 12:48:53 -07:00
parent 936f28842e
commit 079d53ccbe

View File

@@ -69,6 +69,7 @@ import android.util.SparseArray;
import android.util.SparseSetArray;
import android.view.View;
import android.view.ViewGroup;
import android.view.WindowInsets;
import android.view.WindowManager;
import android.window.WindowContainerTransaction;
@@ -189,6 +190,9 @@ public class BubbleController {
/** Saved direction, used to detect layout direction changes @link #onConfigChanged}. */
private int mLayoutDirection = View.LAYOUT_DIRECTION_UNDEFINED;
/** Saved insets, used to detect WindowInset changes. */
private WindowInsets mWindowInsets;
private boolean mInflateSynchronously;
/** True when user is in status bar unlock shade. */
@@ -629,8 +633,11 @@ public class BubbleController {
mBubbleData.getOverflow().initialize(this);
mWindowManager.addView(mStackView, mWmLayoutParams);
mStackView.setOnApplyWindowInsetsListener((view, windowInsets) -> {
mBubblePositioner.update();
mStackView.onDisplaySizeChanged();
if (!windowInsets.equals(mWindowInsets)) {
mWindowInsets = windowInsets;
mBubblePositioner.update();
mStackView.onDisplaySizeChanged();
}
return windowInsets;
});
} catch (IllegalStateException e) {