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

Commit 27b2190c authored by Lucas Dupin's avatar Lucas Dupin
Browse files

Only call layout during layout pass

In other cases, let's just adjust the bounds, otherwise we'll conflict
with the measuring pass, causing the width to be 0 after screen
rotations.

Test: manual
Fixes: 204497727
Change-Id: I759f084577814ff1a4372f1d90cd05ce73604950
parent 6665ad79
Loading
Loading
Loading
Loading
+5 −5
Original line number Diff line number Diff line
@@ -34,7 +34,11 @@ class QSSquishinessController @Inject constructor(
     * Change the height of all tiles and repositions their siblings.
     */
    private fun updateSquishiness() {
        // Start by updating the height of all tiles
        // Update tile positions in the layout
        val tileLayout = quickQSPanelController.tileLayout as TileLayout
        tileLayout.setSquishinessFraction(squishiness)

        // Adjust their heights as well
        for (tile in qsTileHost.tiles) {
            val tileView = quickQSPanelController.getTileView(tile)
            (tileView as? HeightOverrideable)?.let {
@@ -42,10 +46,6 @@ class QSSquishinessController @Inject constructor(
            }
        }

        // Update tile positions in the layout
        val tileLayout = quickQSPanelController.tileLayout as TileLayout
        tileLayout.setSquishinessFraction(squishiness)

        // Calculate how much we should move the footer
        val tileHeightOffset = tileLayout.height - tileLayout.tilesHeight
        val footerTopMargin = (qqsFooterActionsView.layoutParams as ViewGroup.MarginLayoutParams)
+8 −4
Original line number Diff line number Diff line
@@ -212,7 +212,7 @@ public class TileLayout extends ViewGroup implements QSTileLayout {
        return mMaxCellHeight;
    }

    private void layoutTileRecords(int numRecords) {
    private void layoutTileRecords(int numRecords, boolean forLayout) {
        final boolean isRtl = getLayoutDirection() == LAYOUT_DIRECTION_RTL;
        int row = 0;
        int column = 0;
@@ -232,14 +232,18 @@ public class TileLayout extends ViewGroup implements QSTileLayout {
            final int left = getColumnStart(isRtl ? mColumns - column - 1 : column);
            final int right = left + mCellWidth;
            final int bottom = top + record.tileView.getMeasuredHeight();
            if (forLayout) {
                record.tileView.layout(left, top, right, bottom);
            } else {
                record.tileView.setLeftTopRightBottom(left, top, right, bottom);
            }
            mLastTileBottom = bottom;
        }
    }

    @Override
    protected void onLayout(boolean changed, int l, int t, int r, int b) {
        layoutTileRecords(mRecords.size());
        layoutTileRecords(mRecords.size(), true /* forLayout */);
    }

    protected int getRowTop(int row) {
@@ -280,6 +284,6 @@ public class TileLayout extends ViewGroup implements QSTileLayout {
            return;
        }
        mSquishinessFraction = squishinessFraction;
        layoutTileRecords(mRecords.size());
        layoutTileRecords(mRecords.size(), false /* forLayout */);
    }
}