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

Commit 95aa57cd authored by Vinit Nayak's avatar Vinit Nayak Committed by Android (Google) Code Review
Browse files

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

parents 13127f18 76747425
Loading
Loading
Loading
Loading
+24 −0
Original line number Original line 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_BACK_ALT;
import static android.app.StatusBarManager.NAVIGATION_HINT_IME_SHOWN;
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.graphics.Color;
import android.inputmethodservice.InputMethodService;
import android.inputmethodservice.InputMethodService;
import android.os.Handler;
import android.os.Handler;
import android.os.Message;
import android.os.Message;
import android.util.DisplayMetrics;
import android.view.Surface;
import android.view.Surface;


/* Common code */
/* Common code */
public class Utilities {
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.
     * 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;
        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 Original line 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.HOME_BUTTON_LONG_PRESS_DURATION_MS;
import static com.android.internal.config.sysui.SystemUiDeviceConfigFlags.NAV_BAR_HANDLE_FORCE_OPAQUE;
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.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_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_A11Y_BUTTON_LONG_CLICKABLE;
import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_ALLOW_GESTURE_IGNORING_BAR_VISIBILITY;
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;
        if (hints == mNavigationIconHints) return;


        mNavigationIconHints = hints;
        mNavigationIconHints = hints;
        if (!isTablet(mContext)) {
            // All IME functions handled by launcher via Sysui flags for large screen
            mNavigationBarView.setNavigationIconHints(hints);
            mNavigationBarView.setNavigationIconHints(hints);
        }
        checkBarModes();
        checkBarModes();
        updateSystemUiStateFlags(-1);
        updateSystemUiStateFlags(-1);
    }
    }
+5 −16
Original line number Original line 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.WindowManager.LayoutParams.TYPE_NAVIGATION_BAR;
import static android.view.WindowManagerPolicyConstants.NAV_BAR_MODE_3BUTTON;
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.Context;
import android.content.pm.ActivityInfo;
import android.content.pm.ActivityInfo;
import android.content.res.Configuration;
import android.content.res.Configuration;
import android.content.res.Resources;
import android.hardware.display.DisplayManager;
import android.hardware.display.DisplayManager;
import android.os.Bundle;
import android.os.Bundle;
import android.os.Handler;
import android.os.Handler;
import android.os.RemoteException;
import android.os.RemoteException;
import android.util.DisplayMetrics;
import android.util.Log;
import android.util.Log;
import android.util.SparseArray;
import android.util.SparseArray;
import android.view.Display;
import android.view.Display;
@@ -86,8 +86,6 @@ public class NavigationBarController implements Callbacks,
        ConfigurationController.ConfigurationListener,
        ConfigurationController.ConfigurationListener,
        NavigationModeController.ModeChangedListener, Dumpable {
        NavigationModeController.ModeChangedListener, Dumpable {


    private static final float TABLET_MIN_DPS = 600;

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


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


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


@@ -470,15 +468,6 @@ public class NavigationBarController implements Callbacks,
        return mNavigationBars.get(DEFAULT_DISPLAY);
        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
    @Override
    public void dump(@NonNull FileDescriptor fd, @NonNull PrintWriter pw, @NonNull String[] args) {
    public void dump(@NonNull FileDescriptor fd, @NonNull PrintWriter pw, @NonNull String[] args) {
        for (int i = 0; i < mNavigationBars.size(); i++) {
        for (int i = 0; i < mNavigationBars.size(); i++) {