Merge "Prevent showing system IME buttons for gesture nav in taskbar (2/2)" into sc-v2-dev
This commit is contained in:
@@ -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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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;
|
||||||
mNavigationBarView.setNavigationIconHints(hints);
|
if (!isTablet(mContext)) {
|
||||||
|
// All IME functions handled by launcher via Sysui flags for large screen
|
||||||
|
mNavigationBarView.setNavigationIconHints(hints);
|
||||||
|
}
|
||||||
checkBarModes();
|
checkBarModes();
|
||||||
updateSystemUiStateFlags(-1);
|
updateSystemUiStateFlags(-1);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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++) {
|
||||||
|
|||||||
Reference in New Issue
Block a user