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

Commit 51f17d54 authored by Philip Milne's avatar Philip Milne
Browse files

Bugfix for GridLayout assuming that the x value of last column index is...

Bugfix for GridLayout assuming that the x value of last column index is maximal. This is not the case when column indexes are defined incorrectly and GridLayout should still work in this case.

Change-Id: I5deb3fb43ed1dd16dd20868854b96ebae4d30623
parent 60f36a52
Loading
Loading
Loading
Loading
+10 −10
Original line number Diff line number Diff line
@@ -494,6 +494,14 @@ public class GridLayout extends ViewGroup {
        requestLayout();
    }

    private static int max2(int[] a, int valueIfEmpty) {
        int result = valueIfEmpty;
        for (int i = 0, N = a.length; i < N; i++) {
            result = Math.max(result, a[i]);
        }
        return result;
    }

    private static int sum(float[] a) {
        int result = 0;
        for (int i = 0, length = a.length; i < length; i++) {
@@ -1409,7 +1417,7 @@ public class GridLayout extends ViewGroup {
        // External entry points

        private int size(int[] locations) {
            return locations[locations.length - 1] - locations[0];
            return max2(locations, 0) - locations[0];
        }

        private int getMin() {
@@ -1878,21 +1886,13 @@ public class GridLayout extends ViewGroup {
            return result;
        }

        private static int max(int[] a, int valueIfEmpty) {
            int result = valueIfEmpty;
            for (int i = 0, length = a.length; i < length; i++) {
                result = Math.max(result, a[i]);
            }
            return result;
        }

        /*
        Create a compact array of keys or values using the supplied index.
         */
        private static <K> K[] compact(K[] a, int[] index) {
            int size = a.length;
            Class<?> componentType = a.getClass().getComponentType();
            K[] result = (K[]) Array.newInstance(componentType, max(index, -1) + 1);
            K[] result = (K[]) Array.newInstance(componentType, max2(index, -1) + 1);

            // this overwrite duplicates, retaining the last equivalent entry
            for (int i = 0; i < size; i++) {
+10 −2
Original line number Diff line number Diff line
@@ -19,14 +19,17 @@

        android:layout_width="match_parent"
        android:layout_height="match_parent"

        android:useDefaultMargins="true"
        android:marginsIncludedInAlignment="false"

        android:columnCount="4"
        >

    <TextView
            android:text="Email account"
            android:textSize="48dip"

            android:layout_columnSpan="4"
            android:layout_gravity="center_horizontal"
            />
@@ -34,12 +37,14 @@
    <TextView
            android:text="You can configure email in just a few steps:"
            android:textSize="20dip"

            android:layout_columnSpan="4"
            android:layout_gravity="left"
            />

    <TextView
            android:text="Email address:"

            android:layout_gravity="right"
            />

@@ -49,6 +54,7 @@

    <TextView
            android:text="Password:"

            android:layout_column="0"
            android:layout_gravity="right"
            />
@@ -58,14 +64,15 @@
            />

    <Space
            android:layout_rowWeight="1"
            android:layout_columnWeight="1"
            android:layout_row="4"
            android:layout_column="2"
            android:layout_rowWeight="1"
            android:layout_columnWeight="1"
            />

    <Button
            android:text="Manual setup"

            android:layout_row="5"
            android:layout_column="3"
            android:layout_gravity="fill_horizontal"
@@ -73,6 +80,7 @@

    <Button
            android:text="Next"

            android:layout_column="3"
            android:layout_gravity="fill_horizontal"
            />
+12 −16
Original line number Diff line number Diff line
@@ -20,11 +20,15 @@ import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.View;

import android.widget.*;
import android.widget.Button;
import android.widget.EditText;
import android.widget.GridLayout;
import android.widget.Space;
import android.widget.TextView;

import static android.text.InputType.TYPE_CLASS_TEXT;
import static android.view.inputmethod.EditorInfo.*;
import static android.view.inputmethod.EditorInfo.TYPE_TEXT_VARIATION_EMAIL_ADDRESS;
import static android.view.inputmethod.EditorInfo.TYPE_TEXT_VARIATION_PASSWORD;
import static android.widget.GridLayout.*;

public class Activity2 extends Activity {
@@ -42,8 +46,8 @@ public class Activity2 extends Activity {
        Group row6 = new Group(6, CENTER);
        Group row7 = new Group(7, CENTER);

        Group col1a = new Group(1, 5, CENTER);
        Group col1b = new Group(1, 5, LEFT);
        Group col1a = new Group(1, 4, CENTER);
        Group col1b = new Group(1, 4, LEFT);
        Group col1c = new Group(1, RIGHT);
        Group col2 = new Group(2, LEFT);
        Group col3 = new Group(3, FILL);
@@ -55,20 +59,17 @@ public class Activity2 extends Activity {
            v.setText("Email setup");
            vg.addView(v, new LayoutParams(row1, col1a));
        }

        {
            TextView v = new TextView(context);
            v.setTextSize(20);
            v.setText("You can configure email in just a few steps:");
            vg.addView(v, new LayoutParams(row2, col1b));
        }

        {
            TextView v = new TextView(context);
            v.setText("Email address:");
            vg.addView(v, new LayoutParams(row3, col1c));
        }

        {
            EditText v = new EditText(context);
            v.setInputType(TYPE_CLASS_TEXT | TYPE_TEXT_VARIATION_EMAIL_ADDRESS);
@@ -78,13 +79,11 @@ public class Activity2 extends Activity {
                vg.addView(v, lp);
            }
        }

        {
            TextView v = new TextView(context);
            v.setText("Password:");
            vg.addView(v, new LayoutParams(row4, col1c));
        }

        {
            TextView v = new EditText(context);
            v.setInputType(TYPE_CLASS_TEXT | TYPE_TEXT_VARIATION_PASSWORD);
@@ -94,7 +93,6 @@ public class Activity2 extends Activity {
                vg.addView(v, lp);
            }
        }

        {
            Space v = new Space(context);
            {
@@ -104,13 +102,11 @@ public class Activity2 extends Activity {
                vg.addView(v, lp);
            }
        }

        {
            Button v = new Button(context);
            v.setText("Manual setup");
            vg.addView(v, new LayoutParams(row6, col4));
        }

        {
            Button v = new Button(context);
            v.setText("Next");