diff options
Diffstat (limited to 'libs')
3 files changed, 33 insertions, 6 deletions
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopTasksController.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopTasksController.kt index 2abc48da6fbe..31c5e33f21e3 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopTasksController.kt +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopTasksController.kt @@ -279,10 +279,6 @@ class DesktopTasksController( } } - private fun isDesktopDensityOverrideSet(): Boolean { - return DESKTOP_DENSITY_OVERRIDE in DESKTOP_DENSITY_ALLOWED_RANGE - } - private fun getFullscreenDensityDpi(): Int { return context.resources.displayMetrics.densityDpi } @@ -354,5 +350,13 @@ class DesktopTasksController( private val DESKTOP_DENSITY_OVERRIDE = SystemProperties.getInt("persist.wm.debug.desktop_mode_density", 0) private val DESKTOP_DENSITY_ALLOWED_RANGE = (100..1000) + + /** + * Check if desktop density override is enabled + */ + @JvmStatic + fun isDesktopDensityOverrideSet(): Boolean { + return DESKTOP_DENSITY_OVERRIDE in DESKTOP_DENSITY_ALLOWED_RANGE + } } } diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecoration.java b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecoration.java index 72da1089c91c..3c0ef965f4f5 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecoration.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecoration.java @@ -23,6 +23,7 @@ import android.content.Context; import android.content.pm.ApplicationInfo; import android.content.pm.PackageManager; import android.content.res.ColorStateList; +import android.content.res.Configuration; import android.content.res.Resources; import android.graphics.Color; import android.graphics.Point; @@ -46,6 +47,7 @@ import com.android.wm.shell.ShellTaskOrganizer; import com.android.wm.shell.common.DisplayController; import com.android.wm.shell.common.SyncTransactionQueue; import com.android.wm.shell.desktopmode.DesktopModeStatus; +import com.android.wm.shell.desktopmode.DesktopTasksController; /** * Defines visuals and behaviors of a window decoration of a caption bar and shadows. It works with @@ -95,6 +97,17 @@ public class DesktopModeWindowDecoration extends WindowDecoration<WindowDecorLin mDesktopActive = DesktopModeStatus.isActive(mContext); } + @Override + protected Configuration getConfigurationWithOverrides( + ActivityManager.RunningTaskInfo taskInfo) { + Configuration configuration = taskInfo.getConfiguration(); + if (DesktopTasksController.isDesktopDensityOverrideSet()) { + // Density is overridden for desktop tasks. Keep system density for window decoration. + configuration.densityDpi = mContext.getResources().getConfiguration().densityDpi; + } + return configuration; + } + void setCaptionListeners( View.OnClickListener onCaptionButtonClickListener, View.OnTouchListener onCaptionTouchListener) { diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/WindowDecoration.java b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/WindowDecoration.java index 133826f3e69b..f8e6ecc4499a 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/WindowDecoration.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/WindowDecoration.java @@ -131,7 +131,17 @@ public abstract class WindowDecoration<T extends View & TaskFocusStateConsumer> mSurfaceControlViewHostFactory = surfaceControlViewHostFactory; mDisplay = mDisplayController.getDisplay(mTaskInfo.displayId); - mDecorWindowContext = mContext.createConfigurationContext(mTaskInfo.getConfiguration()); + mDecorWindowContext = mContext.createConfigurationContext( + getConfigurationWithOverrides(mTaskInfo)); + } + + /** + * Get {@link Configuration} from supplied {@link RunningTaskInfo}. + * + * Allows values to be overridden before returning the configuration. + */ + protected Configuration getConfigurationWithOverrides(RunningTaskInfo taskInfo) { + return taskInfo.getConfiguration(); } /** @@ -165,7 +175,7 @@ public abstract class WindowDecoration<T extends View & TaskFocusStateConsumer> outResult.mRootView = rootView; rootView = null; // Clear it just in case we use it accidentally - final Configuration taskConfig = mTaskInfo.getConfiguration(); + final Configuration taskConfig = getConfigurationWithOverrides(mTaskInfo); if (oldTaskConfig.densityDpi != taskConfig.densityDpi || mDisplay == null || mDisplay.getDisplayId() != mTaskInfo.displayId) { |