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

Commit 27831e1b authored by Kevin's avatar Kevin
Browse files

Fix thumbnail views not rotating w/ orientation

View has an optimization where it will not measure again if it
is exact and the measurement has not changed. This means that when an
onMeasure pass starts off for each task view on orientation change,
it does not get passed down to the view holding the thumbnail and
icon as its measure specs have not changed. This causes an issue as
we use this measure call to react to orientation changes and
re-measure the thumbnail view to match the orientation of the device.

To fix this, we call forceLayout on the child explicitly on orientation
change to ensure that we get the measure call. This sets the flag to
force a re-measure in the next layout.

Bug: 131427332
Test: Do repro in bug, view rotates correctly
Change-Id: I0ef84dfcd0b3883582c8903d99d5e8a757ae8e74
parent ee8caf68
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -44,6 +44,7 @@ public final class TaskItemView extends LinearLayout {
    private final Drawable mDefaultThumbnail;
    private final TaskLayerDrawable mIconDrawable;
    private final TaskLayerDrawable mThumbnailDrawable;
    private View mTaskIconThumbnailView;
    private TextView mLabelView;
    private ImageView mIconView;
    private ImageView mThumbnailView;
@@ -79,6 +80,7 @@ public final class TaskItemView extends LinearLayout {
    protected void onFinishInflate() {
        super.onFinishInflate();
        mLabelView = findViewById(R.id.task_label);
        mTaskIconThumbnailView = findViewById(R.id.task_icon_and_thumbnail);
        mThumbnailView = findViewById(R.id.task_thumbnail);
        mIconView = findViewById(R.id.task_icon);

@@ -186,5 +188,6 @@ public final class TaskItemView extends LinearLayout {
                ((ThumbnailDrawable) drawable).setRequestedOrientation(newConfig.orientation);
            }
        }
        mTaskIconThumbnailView.forceLayout();
    }
}
+0 −1
Original line number Diff line number Diff line
@@ -56,7 +56,6 @@ final class TaskThumbnailIconView extends ViewGroup {
        int width = height;
        setMeasuredDimension(width, height);


        int subItemSize = (int) (SUBITEM_FRAME_RATIO * height);
        if (mThumbnailView.getVisibility() != GONE) {
            boolean isPortrait =