Fix WidgetsBottomSheet inset bug after orientation change

Reset the inset upon orientation change

Test: Open bottom widgets picker. Rotate the screen from portrait
      to landscape and then back to portrait. Observe the correct
      inset is set.
Bug: 183601302
Change-Id: I88432a49b2601df843fe33911fd7acdde66d06c4
This commit is contained in:
Steven Ng
2021-04-27 18:26:29 +01:00
parent a7fc3ee4c7
commit 6fe7df3fa8
@@ -20,6 +20,7 @@ import static com.android.launcher3.anim.Interpolators.FAST_OUT_SLOW_IN;
import android.animation.PropertyValuesHolder;
import android.content.Context;
import android.content.res.Configuration;
import android.graphics.Rect;
import android.util.AttributeSet;
import android.util.IntProperty;
@@ -71,6 +72,7 @@ public class WidgetsBottomSheet extends BaseWidgetSheet implements Insettable {
private Rect mInsets;
private final int mMaxTableHeight;
private int mMaxHorizontalSpan = 4;
private Configuration mCurrentConfiguration;
public WidgetsBottomSheet(Context context, AttributeSet attrs) {
this(context, attrs, 0);
@@ -85,6 +87,7 @@ public class WidgetsBottomSheet extends BaseWidgetSheet implements Insettable {
// Set the max table height to 2 / 3 of the grid height so that the bottom picker won't
// take over the entire view vertically.
mMaxTableHeight = deviceProfile.inv.numRows * 2 / 3 * deviceProfile.cellHeightPx;
mCurrentConfiguration = new Configuration(getResources().getConfiguration());
}
@Override
@@ -211,6 +214,14 @@ public class WidgetsBottomSheet extends BaseWidgetSheet implements Insettable {
setPadding(leftInset, getPaddingTop(), rightInset, bottomInset);
}
@Override
protected void onConfigurationChanged(Configuration newConfig) {
if (mCurrentConfiguration.orientation != newConfig.orientation) {
mInsets.setEmpty();
}
mCurrentConfiguration.updateFrom(newConfig);
}
@Override
protected Pair<View, String> getAccessibilityTarget() {
return Pair.create(findViewById(R.id.title), getContext().getString(