Merge "Fix ArrayIndexOutOfBoundsException, (issue 11038649)" into jb-ub-now-indigo-rose
diff --git a/res/drawable-hdpi/ic_pageindicator_add.png b/res/drawable-hdpi/ic_pageindicator_add.png
index c77a4f9..c37d622 100644
--- a/res/drawable-hdpi/ic_pageindicator_add.png
+++ b/res/drawable-hdpi/ic_pageindicator_add.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_pageindicator_add.png b/res/drawable-mdpi/ic_pageindicator_add.png
index 22420bd..8e05e64 100644
--- a/res/drawable-mdpi/ic_pageindicator_add.png
+++ b/res/drawable-mdpi/ic_pageindicator_add.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_pageindicator_add.png b/res/drawable-xhdpi/ic_pageindicator_add.png
index 9647b8f..28e164b 100644
--- a/res/drawable-xhdpi/ic_pageindicator_add.png
+++ b/res/drawable-xhdpi/ic_pageindicator_add.png
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_pageindicator_add.png b/res/drawable-xxhdpi/ic_pageindicator_add.png
index 591b189..fd8a662 100644
--- a/res/drawable-xxhdpi/ic_pageindicator_add.png
+++ b/res/drawable-xxhdpi/ic_pageindicator_add.png
Binary files differ
diff --git a/src/com/android/launcher3/CellLayout.java b/src/com/android/launcher3/CellLayout.java
index 81f9af2..72a6ce2 100644
--- a/src/com/android/launcher3/CellLayout.java
+++ b/src/com/android/launcher3/CellLayout.java
@@ -296,12 +296,8 @@
addView(mShortcutsAndWidgets);
}
- public void enableHardwareLayers() {
- mShortcutsAndWidgets.setLayerType(LAYER_TYPE_HARDWARE, sPaint);
- }
-
- public void disableHardwareLayers() {
- mShortcutsAndWidgets.setLayerType(LAYER_TYPE_NONE, sPaint);
+ public void enableHardwareLayer(boolean hasLayer) {
+ mShortcutsAndWidgets.setLayerType(hasLayer ? LAYER_TYPE_HARDWARE : LAYER_TYPE_NONE, sPaint);
}
public void buildHardwareLayer() {
diff --git a/src/com/android/launcher3/DynamicGrid.java b/src/com/android/launcher3/DynamicGrid.java
index 33eb595..8a6fbc1 100644
--- a/src/com/android/launcher3/DynamicGrid.java
+++ b/src/com/android/launcher3/DynamicGrid.java
@@ -498,17 +498,17 @@
boolean hasAA = !AppsCustomizePagedView.DISABLE_ALL_APPS;
// Our phone profiles include the bar sizes in each orientation
deviceProfiles.add(new DeviceProfile("Super Short Stubby",
- 255, 300, 2, 3, 48, 12, (hasAA ? 5 : 4), 48));
+ 255, 300, 2, 3, 48, 13, (hasAA ? 5 : 4), 48));
deviceProfiles.add(new DeviceProfile("Shorter Stubby",
- 255, 400, 3, 3, 48, 12, (hasAA ? 5 : 4), 48));
+ 255, 400, 3, 3, 48, 13, (hasAA ? 5 : 4), 48));
deviceProfiles.add(new DeviceProfile("Short Stubby",
- 275, 420, 3, 4, 48, 12, (hasAA ? 5 : 4), 48));
+ 275, 420, 3, 4, 48, 13, (hasAA ? 5 : 4), 48));
deviceProfiles.add(new DeviceProfile("Stubby",
- 255, 450, 3, 4, 48, 12, (hasAA ? 5 : 4), 48));
+ 255, 450, 3, 4, 48, 13, (hasAA ? 5 : 4), 48));
deviceProfiles.add(new DeviceProfile("Nexus S",
- 296, 491.33f, 4, 4, 48, 12, (hasAA ? 5 : 4), 48));
+ 296, 491.33f, 4, 4, 48, 13, (hasAA ? 5 : 4), 48));
deviceProfiles.add(new DeviceProfile("Nexus 4",
- 359, 518, 4, 4, 60, 12, (hasAA ? 5 : 4), 56));
+ 359, 518, 4, 4, 60, 13, (hasAA ? 5 : 4), 56));
// The tablet profile is odd in that the landscape orientation
// also includes the nav bar on the side
deviceProfiles.add(new DeviceProfile("Nexus 7",
diff --git a/src/com/android/launcher3/Launcher.java b/src/com/android/launcher3/Launcher.java
index 831637f..f1d4c1d 100644
--- a/src/com/android/launcher3/Launcher.java
+++ b/src/com/android/launcher3/Launcher.java
@@ -911,6 +911,7 @@
if (DEBUG_RESUME_TIME) {
Log.d(TAG, "Time spent in onResume: " + (System.currentTimeMillis() - startTime));
}
+ mWorkspace.updateInteractionForState();
}
@Override
@@ -1719,7 +1720,7 @@
}
}
protected void showWorkspaceAndExitOverviewMode() {
- showWorkspaceAndExitOverviewMode(true);
+ showWorkspaceAndExitOverviewMode(false);
}
@Override
@@ -3072,7 +3073,6 @@
.sendAccessibilityEvent(AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED);
onWorkspaceShown(animated);
- onInteractionEnd();
}
public void onWorkspaceShown(boolean animated) {
@@ -3087,7 +3087,6 @@
// Change the state *after* we've called all the transition code
mState = State.APPS_CUSTOMIZE;
- onInteractionBegin();
// Pause the auto-advance of widgets until we are out of AllApps
mUserPresent = false;
diff --git a/src/com/android/launcher3/PagedView.java b/src/com/android/launcher3/PagedView.java
index 03e24c6..fcc1aff 100644
--- a/src/com/android/launcher3/PagedView.java
+++ b/src/com/android/launcher3/PagedView.java
@@ -990,13 +990,14 @@
// in accordance with any scroll effects.
mForceScreenScrolled = true;
mRecomputePageSpacing = true;
-
+ updateFreescrollBounds();
invalidate();
}
@Override
public void onChildViewRemoved(View parent, View child) {
mForceScreenScrolled = true;
+ updateFreescrollBounds();
invalidate();
}
@@ -1558,6 +1559,17 @@
setEnableFreeScroll(false, snapPage);
}
+ void updateFreescrollBounds() {
+ getOverviewModePages(mTempVisiblePagesRange);
+ if (isLayoutRtl()) {
+ mFreeScrollMinScrollX = getScrollForPage(mTempVisiblePagesRange[1]);
+ mFreeScrollMaxScrollX = getScrollForPage(mTempVisiblePagesRange[0]);
+ } else {
+ mFreeScrollMinScrollX = getScrollForPage(mTempVisiblePagesRange[0]);
+ mFreeScrollMaxScrollX = getScrollForPage(mTempVisiblePagesRange[1]);
+ }
+ }
+
private void setEnableFreeScroll(boolean freeScroll, int snapPage) {
mFreeScroll = freeScroll;
@@ -1565,18 +1577,11 @@
snapPage = getPageNearestToCenterOfScreen();
}
- getOverviewModePages(mTempVisiblePagesRange);
if (!mFreeScroll) {
snapToPage(snapPage);
} else {
- if (isLayoutRtl()) {
- mFreeScrollMinScrollX = getScrollForPage(mTempVisiblePagesRange[1]);
- mFreeScrollMaxScrollX = getScrollForPage(mTempVisiblePagesRange[0]);
- } else {
- mFreeScrollMinScrollX = getScrollForPage(mTempVisiblePagesRange[0]);
- mFreeScrollMaxScrollX = getScrollForPage(mTempVisiblePagesRange[1]);
- }
-
+ updateFreescrollBounds();
+ getOverviewModePages(mTempVisiblePagesRange);
if (getCurrentPage() < mTempVisiblePagesRange[0]) {
setCurrentPage(mTempVisiblePagesRange[0]);
} else if (getCurrentPage() > mTempVisiblePagesRange[1]) {
diff --git a/src/com/android/launcher3/Workspace.java b/src/com/android/launcher3/Workspace.java
index ea348ef..2b7a737 100644
--- a/src/com/android/launcher3/Workspace.java
+++ b/src/com/android/launcher3/Workspace.java
@@ -1046,7 +1046,7 @@
mLauncher.updateVoiceButtonProxyVisible(false);
}
}
- };
+ }
protected void setWallpaperDimension() {
String spKey = WallpaperCropActivity.getSharedPreferencesKey();
@@ -1572,7 +1572,7 @@
} else {
for (int i = 0; i < getPageCount(); i++) {
final CellLayout cl = (CellLayout) getChildAt(i);
- cl.disableHardwareLayers();
+ cl.enableHardwareLayer(false);
}
}
}
@@ -1592,17 +1592,16 @@
leftScreen--;
}
}
+
+ final CellLayout customScreen = mWorkspaceScreens.get(CUSTOM_CONTENT_SCREEN_ID);
for (int i = 0; i < screenCount; i++) {
final CellLayout layout = (CellLayout) getPageAt(i);
- if (!(leftScreen <= i && i <= rightScreen && shouldDrawChild(layout))) {
- layout.disableHardwareLayers();
- }
- }
- for (int i = 0; i < screenCount; i++) {
- final CellLayout layout = (CellLayout) getPageAt(i);
- if (leftScreen <= i && i <= rightScreen && shouldDrawChild(layout)) {
- layout.enableHardwareLayers();
- }
+
+ // enable layers between left and right screen inclusive, except for the
+ // customScreen, which may animate its content during transitions.
+ boolean enableLayer = layout != customScreen &&
+ leftScreen <= i && i <= rightScreen && shouldDrawChild(layout);
+ layout.enableHardwareLayer(enableLayer);
}
}
}
@@ -1780,19 +1779,16 @@
if (mTouchState != TOUCH_STATE_REST) {
return false;
}
- mLauncher.onInteractionBegin();
enableOverviewMode(true, -1, true);
return true;
}
public void exitOverviewMode(boolean animated) {
exitOverviewMode(-1, animated);
- mLauncher.onInteractionEnd();
}
public void exitOverviewMode(int snapPage, boolean animated) {
enableOverviewMode(false, snapPage, animated);
- mLauncher.onInteractionEnd();
}
private void enableOverviewMode(boolean enable, int snapPage, boolean animated) {
@@ -1835,6 +1831,19 @@
return true;
}
+ public void updateInteractionForState() {
+ if (mState != State.NORMAL) {
+ mLauncher.onInteractionBegin();
+ } else {
+ mLauncher.onInteractionEnd();
+ }
+ }
+
+ private void setState(State state) {
+ mState = state;
+ updateInteractionForState();
+ }
+
Animator getChangeStateAnimation(final State state, boolean animated, int delay, int snapPage) {
if (mState == state) {
return null;
@@ -1850,7 +1859,7 @@
final boolean oldStateIsSpringLoaded = (oldState == State.SPRING_LOADED);
final boolean oldStateIsSmall = (oldState == State.SMALL);
final boolean oldStateIsOverview = (oldState == State.OVERVIEW);
- mState = state;
+ setState(state);
final boolean stateIsNormal = (state == State.NORMAL);
final boolean stateIsSpringLoaded = (state == State.SPRING_LOADED);
final boolean stateIsSmall = (state == State.SMALL);
@@ -4273,7 +4282,7 @@
if (screenId == EXTRA_EMPTY_SCREEN_ID) {
int count = mScreenOrder.size() - (hasCustomContent() ? 1 : 0);
if (count > 1) {
- return new PageIndicator.PageMarkerResources(R.drawable.ic_pageindicator_add,
+ return new PageIndicator.PageMarkerResources(R.drawable.ic_pageindicator_current,
R.drawable.ic_pageindicator_add);
}
}