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

Commit 786e970b authored by Vinit Nayak's avatar Vinit Nayak Committed by Automerger Merge Worker
Browse files

Merge "Prevent showing system IME buttons for gesture nav in taskbar (2/2)"...

Merge "Prevent showing system IME buttons for gesture nav in taskbar (2/2)" into sc-v2-dev am: 95aa57cd

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/15069641

Change-Id: I899f11f5724048e3b746576200e70ed246658792
parents 20290c3f 95aa57cd
Loading
Loading
Loading
Loading
+24 −0
Original line number Diff line number Diff line
@@ -19,15 +19,21 @@ package com.android.systemui.shared.recents.utilities;
import static android.app.StatusBarManager.NAVIGATION_HINT_BACK_ALT;
import static android.app.StatusBarManager.NAVIGATION_HINT_IME_SHOWN;

import android.content.Context;
import android.content.res.Configuration;
import android.content.res.Resources;
import android.graphics.Color;
import android.inputmethodservice.InputMethodService;
import android.os.Handler;
import android.os.Message;
import android.util.DisplayMetrics;
import android.view.Surface;

/* Common code */
public class Utilities {

    private static final float TABLET_MIN_DPS = 600;

    /**
     * Posts a runnable on a handler at the front of the queue ignoring any sync barriers.
     */
@@ -110,4 +116,22 @@ public class Utilities {

        return hints;
    }

    /** See {@link #isTablet(Configuration, Context)} */
    public static boolean isTablet(Context context) {
        Configuration newConfig = context.getResources().getConfiguration();
        return isTablet(newConfig, context);
    }

    /**
     * @return whether or not {@param newConfig} represents that of a large screen device or not
     */
    public static boolean isTablet(Configuration newConfig, Context context) {
        float density = Resources.getSystem().getDisplayMetrics().density;
        int size = Math.min((int) (density * newConfig.screenWidthDp),
                (int) (density* newConfig.screenHeightDp));
        DisplayMetrics metrics = context.getResources().getDisplayMetrics();
        float densityRatio = (float) metrics.densityDpi / DisplayMetrics.DENSITY_DEFAULT;
        return (size / densityRatio) >= TABLET_MIN_DPS;
    }
}
+5 −1
Original line number Diff line number Diff line
@@ -42,6 +42,7 @@ import static com.android.internal.accessibility.common.ShortcutConstants.CHOOSE
import static com.android.internal.config.sysui.SystemUiDeviceConfigFlags.HOME_BUTTON_LONG_PRESS_DURATION_MS;
import static com.android.internal.config.sysui.SystemUiDeviceConfigFlags.NAV_BAR_HANDLE_FORCE_OPAQUE;
import static com.android.systemui.recents.OverviewProxyService.OverviewProxyListener;
import static com.android.systemui.shared.recents.utilities.Utilities.isTablet;
import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_A11Y_BUTTON_CLICKABLE;
import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_A11Y_BUTTON_LONG_CLICKABLE;
import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_ALLOW_GESTURE_IGNORING_BAR_VISIBILITY;
@@ -878,7 +879,10 @@ public class NavigationBar implements View.OnAttachStateChangeListener,
        if (hints == mNavigationIconHints) return;

        mNavigationIconHints = hints;
        if (!isTablet(mContext)) {
            // All IME functions handled by launcher via Sysui flags for large screen
            mNavigationBarView.setNavigationIconHints(hints);
        }
        checkBarModes();
        updateSystemUiStateFlags(-1);
    }
+5 −16
Original line number Diff line number Diff line
@@ -20,15 +20,15 @@ import static android.view.Display.DEFAULT_DISPLAY;
import static android.view.WindowManager.LayoutParams.TYPE_NAVIGATION_BAR;
import static android.view.WindowManagerPolicyConstants.NAV_BAR_MODE_3BUTTON;

import static com.android.systemui.shared.recents.utilities.Utilities.isTablet;

import android.content.Context;
import android.content.pm.ActivityInfo;
import android.content.res.Configuration;
import android.content.res.Resources;
import android.hardware.display.DisplayManager;
import android.os.Bundle;
import android.os.Handler;
import android.os.RemoteException;
import android.util.DisplayMetrics;
import android.util.Log;
import android.util.SparseArray;
import android.view.Display;
@@ -86,8 +86,6 @@ public class NavigationBarController implements Callbacks,
        ConfigurationController.ConfigurationListener,
        NavigationModeController.ModeChangedListener, Dumpable {

    private static final float TABLET_MIN_DPS = 600;

    private static final String TAG = NavigationBarController.class.getSimpleName();

    private final Context mContext;
@@ -196,14 +194,14 @@ public class NavigationBarController implements Callbacks,
        mTaskbarDelegate = taskbarDelegate;
        mTaskbarDelegate.setOverviewProxyService(overviewProxyService,
                navigationBarA11yHelper, mSysUiFlagsContainer);
        mIsTablet = isTablet(mContext.getResources().getConfiguration());
        mIsTablet = isTablet(mContext);
        mUserTracker = userTracker;
    }

    @Override
    public void onConfigChanged(Configuration newConfig) {
        boolean isOldConfigTablet = mIsTablet;
        mIsTablet = isTablet(newConfig);
        mIsTablet = isTablet(newConfig, mContext);
        boolean largeScreenChanged = mIsTablet != isOldConfigTablet;
        // If we folded/unfolded while in 3 button, show navbar in folded state, hide in unfolded
        if (largeScreenChanged && updateNavbarForTaskbar()) {
@@ -275,7 +273,7 @@ public class NavigationBarController implements Callbacks,
    @Override
    public void onDisplayReady(int displayId) {
        Display display = mDisplayManager.getDisplay(displayId);
        mIsTablet = isTablet(mContext.getResources().getConfiguration());
        mIsTablet = isTablet(mContext);
        createNavigationBar(display, null /* savedState */, null /* result */);
    }

@@ -470,15 +468,6 @@ public class NavigationBarController implements Callbacks,
        return mNavigationBars.get(DEFAULT_DISPLAY);
    }

    private boolean isTablet(Configuration newConfig) {
        float density = Resources.getSystem().getDisplayMetrics().density;
        int size = Math.min((int) (density * newConfig.screenWidthDp),
                (int) (density* newConfig.screenHeightDp));
        DisplayMetrics metrics = mContext.getResources().getDisplayMetrics();
        float densityRatio = (float) metrics.densityDpi / DisplayMetrics.DENSITY_DEFAULT;
        return (size / densityRatio) >= TABLET_MIN_DPS;
    }

    @Override
    public void dump(@NonNull FileDescriptor fd, @NonNull PrintWriter pw, @NonNull String[] args) {
        for (int i = 0; i < mNavigationBars.size(); i++) {