From 4b4ba90d66ed452ea3806a1f2357e2e71ccdd548 Mon Sep 17 00:00:00 2001 From: Winson Date: Wed, 27 Jul 2016 19:45:52 -0700 Subject: [PATCH] Defaulting wallpaper offset to edge of the screen. - To match the AOSP launcher which no longer centers the default page, we now align the wallpaper to either edge of the screen (depending on RTL). This prevents a jump in the keyguard when starting the device due to the wallpaper offset being initialized before Launcher is started and can update the offset itself. Bug: 28795125 Change-Id: Ica96a367157aef696b361601d346774960430fbf --- .../core/java/com/android/server/wm/WallpaperController.java | 5 ++++- services/core/java/com/android/server/wm/WindowState.java | 4 ++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/services/core/java/com/android/server/wm/WallpaperController.java b/services/core/java/com/android/server/wm/WallpaperController.java index 18f97a7f606ff..a976b3649554b 100644 --- a/services/core/java/com/android/server/wm/WallpaperController.java +++ b/services/core/java/com/android/server/wm/WallpaperController.java @@ -246,7 +246,10 @@ class WallpaperController { boolean updateWallpaperOffset(WindowState wallpaperWin, int dw, int dh, boolean sync) { boolean rawChanged = false; - float wpx = mLastWallpaperX >= 0 ? mLastWallpaperX : 0.5f; + // Set the default wallpaper x-offset to either edge of the screen (depending on RTL), to + // match the behavior of most Launchers + float defaultWallpaperX = wallpaperWin.isRtl() ? 1f : 0f; + float wpx = mLastWallpaperX >= 0 ? mLastWallpaperX : defaultWallpaperX; float wpxs = mLastWallpaperXStep >= 0 ? mLastWallpaperXStep : -1.0f; int availw = wallpaperWin.mFrame.right - wallpaperWin.mFrame.left - dw; int offset = availw > 0 ? -(int)(availw * wpx + .5f) : 0; diff --git a/services/core/java/com/android/server/wm/WindowState.java b/services/core/java/com/android/server/wm/WindowState.java index 155d8d05b1ffa..94226ca90aff8 100644 --- a/services/core/java/com/android/server/wm/WindowState.java +++ b/services/core/java/com/android/server/wm/WindowState.java @@ -2939,4 +2939,8 @@ final class WindowState implements WindowManagerPolicy.WindowState { return -1; } } + + public boolean isRtl() { + return mMergedConfiguration.getLayoutDirection() == View.LAYOUT_DIRECTION_RTL; + } }