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

Commit 5de886a1 authored by Michael Kolb's avatar Michael Kolb
Browse files

Add outset to decor view measuring

Change-Id: Ib0e68311ff8ed1fccf9219b28c42ee43c5952050
parent ecaea7e6
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -1639,6 +1639,7 @@
             that is, when in portrait. Can be either an absolute dimension
             or a fraction of the screen size in that dimension. -->
        <attr name="windowFixedHeightMajor" format="dimension|fraction" />
        <attr name="windowOutsetBottom" format="dimension" />
    </declare-styleable>

    <!-- The set of attributes that describe a AlertDialog's theme. -->
+14 −1
Original line number Diff line number Diff line
@@ -125,6 +125,7 @@ public class PhoneWindow extends Window implements MenuBuilder.Callback {
    TypedValue mFixedWidthMinor;
    TypedValue mFixedHeightMajor;
    TypedValue mFixedHeightMinor;
    TypedValue mOutsetBottom;

    // This is the top-level view of the window, containing the window decor.
    private DecorView mDecor;
@@ -2289,7 +2290,6 @@ public class PhoneWindow extends Window implements MenuBuilder.Callback {
                    } else {
                        h = 0;
                    }

                    if (h > 0) {
                        final int heightSize = MeasureSpec.getSize(heightMeasureSpec);
                        heightMeasureSpec = MeasureSpec.makeMeasureSpec(
@@ -2298,6 +2298,15 @@ public class PhoneWindow extends Window implements MenuBuilder.Callback {
                }
            }

            if (mOutsetBottom != null) {
                int mode = MeasureSpec.getMode(heightMeasureSpec);
                if (mode != MeasureSpec.UNSPECIFIED) {
                    int outset = (int) mOutsetBottom.getDimension(metrics);
                    int height = MeasureSpec.getSize(heightMeasureSpec);
                    heightMeasureSpec = MeasureSpec.makeMeasureSpec(height + outset, mode);
                }
            }

            super.onMeasure(widthMeasureSpec, heightMeasureSpec);

            int width = getMeasuredWidth();
@@ -2904,6 +2913,10 @@ public class PhoneWindow extends Window implements MenuBuilder.Callback {
            a.getValue(com.android.internal.R.styleable.Window_windowFixedHeightMinor,
                    mFixedHeightMinor);
        }
        if (a.hasValue(com.android.internal.R.styleable.Window_windowOutsetBottom)) {
            if (mOutsetBottom == null) mOutsetBottom = new TypedValue();
            a.getValue(com.android.internal.R.styleable.Window_windowOutsetBottom, mOutsetBottom);
        }

        final Context context = getContext();
        final int targetSdk = context.getApplicationInfo().targetSdkVersion;