summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Jurka <mikejurka@google.com>2014-01-29 16:32:39 +0100
committerDanesh M <daneshm90@gmail.com>2014-06-06 22:54:27 -0700
commit2985440a1e90b40795bdb0b6caee6f58be5e3fd7 (patch)
tree2a513417437a5ea2c99ed3e8df3fc903b826df39
parent1d9c2810700b8bc643be34f5e576d82e94115fe5 (diff)
downloadandroid_packages_apps_Trebuchet-2985440a1e90b40795bdb0b6caee6f58be5e3fd7.tar.gz
android_packages_apps_Trebuchet-2985440a1e90b40795bdb0b6caee6f58be5e3fd7.tar.bz2
android_packages_apps_Trebuchet-2985440a1e90b40795bdb0b6caee6f58be5e3fd7.zip
Fix bug: Scroll position reported incorrectly to live wallpapers
Bug: 11189265 Change-Id: I410f318df4e43ed13d33889a8158a03438a6174f
-rw-r--r--src/com/android/launcher3/Workspace.java24
1 files changed, 22 insertions, 2 deletions
diff --git a/src/com/android/launcher3/Workspace.java b/src/com/android/launcher3/Workspace.java
index 91f93dd14..72fd9edbc 100644
--- a/src/com/android/launcher3/Workspace.java
+++ b/src/com/android/launcher3/Workspace.java
@@ -213,7 +213,12 @@ public class Workspace extends SmoothPagedView
private boolean mWorkspaceFadeInAdjacentScreens;
WallpaperOffsetInterpolator mWallpaperOffset;
+
private boolean mScrollWallpaper;
+ private boolean mWallpaperIsLiveWallpaper;
+ private int mNumPagesForWallpaperParallax;
+ private float mLastSetWallpaperOffsetSteps = 0;
+
private Runnable mDelayedResizeRunnable;
private Point mDisplaySize = new Point();
@@ -1395,7 +1400,14 @@ public class Workspace extends SmoothPagedView
// Don't use up all the wallpaper parallax until you have at least
// MIN_PARALLAX_PAGE_SPAN pages
int numScrollingPages = getNumScreensExcludingEmptyAndCustom();
- int parallaxPageSpan = Math.max(MIN_PARALLAX_PAGE_SPAN, numScrollingPages - 1);
+ int parallaxPageSpan;
+ if (mWallpaperIsLiveWallpaper) {
+ parallaxPageSpan = numScrollingPages - 1;
+ } else {
+ parallaxPageSpan = Math.max(MIN_PARALLAX_PAGE_SPAN, numScrollingPages - 1);
+ }
+ mNumPagesForWallpaperParallax = parallaxPageSpan;
+
// On RTL devices, push the wallpaper offset to the right if we don't have enough
// pages (ie if numScrollingPages < MIN_PARALLAX_PAGE_SPAN)
int padding = isLayoutRtl() ? parallaxPageSpan - numScrollingPages + 1 : 0;
@@ -1439,7 +1451,11 @@ public class Workspace extends SmoothPagedView
private void setWallpaperOffsetSteps() {
// Set wallpaper offset steps (1 / (number of screens - 1))
- mWallpaperManager.setWallpaperOffsetSteps(1.0f / (getChildCount() - 1), 1.0f);
+ float xOffset = 1.0f / mNumPagesForWallpaperParallax;
+ if (xOffset != mLastSetWallpaperOffsetSteps) {
+ mWallpaperManager.setWallpaperOffsetSteps(xOffset, 1.0f);
+ mLastSetWallpaperOffsetSteps = xOffset;
+ }
}
public void setFinalX(float x) {
@@ -1781,6 +1797,10 @@ public class Workspace extends SmoothPagedView
if (LauncherAppState.getInstance().hasWallpaperChangedSinceLastCheck()) {
setWallpaperDimension();
}
+ mWallpaperIsLiveWallpaper = mWallpaperManager.getWallpaperInfo() != null;
+ // Force the wallpaper offset steps to be set again, because another app might have changed
+ // them
+ mLastSetWallpaperOffsetSteps = 0f;
}
@Override