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

Commit 95ede7fb authored by Matt Pietal's avatar Matt Pietal
Browse files

[DO NOT MERGE] Resolver/Chooser - Window inset fixes

Resolver supports numerous layouts, with optional ViewGroups. Need to
make sure the window inset is applied to the correct view. If there is
a List present, add a footer so that the list scrolls underneath the
navbar.

Test: atest ResolverActivityTest
Bug: 145670872
Change-Id: I94652c5e0068436878a307701b5785f02060b8d6
parent 3e57701b
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -2562,6 +2562,12 @@ public class ChooserActivity extends ResolverActivity {
        }
    }

    @Override
    protected boolean shouldAddFooterView() {
        // To accommodate for window insets
        return true;
    }

    public class ChooserListAdapter extends ResolveListAdapter {
        public static final int TARGET_BAD = -1;
        public static final int TARGET_CALLER = 0;
+17 −3
Original line number Diff line number Diff line
@@ -382,14 +382,30 @@ public class ResolverActivity extends Activity {
        finish();
    }

    /**
     * Numerous layouts are supported, each with optional ViewGroups.
     * Make sure the inset gets added to the correct View, using
     * a footer for Lists so it can properly scroll under the navbar.
     */
    protected boolean shouldAddFooterView() {
        if (useLayoutWithDefault()) return true;

        View buttonBar = findViewById(R.id.button_bar);
        if (buttonBar == null || buttonBar.getVisibility() == View.GONE) return true;

        return false;
    }

    protected WindowInsets onApplyWindowInsets(View v, WindowInsets insets) {
        mSystemWindowInsets = insets.getSystemWindowInsets();

        mResolverDrawerLayout.setPadding(mSystemWindowInsets.left, mSystemWindowInsets.top,
                mSystemWindowInsets.right, 0);

        resetButtonBar();

        // Need extra padding so the list can fully scroll up
        if (useLayoutWithDefault()) {
        if (shouldAddFooterView()) {
            if (mFooterSpacer == null) {
                mFooterSpacer = new Space(getApplicationContext());
            } else {
@@ -407,8 +423,6 @@ public class ResolverActivity extends Activity {
            }
        }

        resetButtonBar();

        return insets.consumeSystemWindowInsets();
    }