mirror of
https://github.com/LawnchairLauncher/lawnchair.git
synced 2026-02-27 23:36:47 +00:00
resolved conflicts w/0ede734d0780a968c9c345f99a18f9f8b9fc02cd
Change-Id: I50900698a590e8d84a6cbcc560f95209d3a6d110
This commit is contained in:
@@ -19,6 +19,7 @@ package com.android.launcher2;
|
||||
import android.animation.Animator;
|
||||
import android.animation.AnimatorListenerAdapter;
|
||||
import android.animation.AnimatorSet;
|
||||
import android.animation.ObjectAnimator;
|
||||
import android.animation.TimeInterpolator;
|
||||
import android.animation.ValueAnimator;
|
||||
import android.animation.ValueAnimator.AnimatorUpdateListener;
|
||||
@@ -36,8 +37,10 @@ import android.graphics.Rect;
|
||||
import android.graphics.drawable.ColorDrawable;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.graphics.drawable.NinePatchDrawable;
|
||||
import android.os.Parcelable;
|
||||
import android.util.AttributeSet;
|
||||
import android.util.Log;
|
||||
import android.util.SparseArray;
|
||||
import android.view.MotionEvent;
|
||||
import android.view.View;
|
||||
import android.view.ViewDebug;
|
||||
@@ -540,6 +543,10 @@ public class CellLayout extends ViewGroup {
|
||||
return false;
|
||||
}
|
||||
|
||||
public void restoreInstanceState(SparseArray<Parcelable> states) {
|
||||
dispatchRestoreInstanceState(states);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void cancelLongPress() {
|
||||
super.cancelLongPress();
|
||||
|
||||
@@ -280,6 +280,8 @@ public final class Launcher extends Activity
|
||||
private static Drawable.ConstantState[] sVoiceSearchIcon = new Drawable.ConstantState[2];
|
||||
private static Drawable.ConstantState[] sAppMarketIcon = new Drawable.ConstantState[2];
|
||||
|
||||
private final ArrayList<Integer> mSynchronouslyBoundPages = new ArrayList<Integer>();
|
||||
|
||||
static final ArrayList<String> sDumpLogs = new ArrayList<String>();
|
||||
|
||||
// We only want to get the SharedPreferences once since it does an FS stat each time we get
|
||||
@@ -1428,9 +1430,11 @@ public final class Launcher extends Activity
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onRestoreInstanceState(Bundle savedInstanceState) {
|
||||
// Do not call super here
|
||||
mSavedInstanceState = savedInstanceState;
|
||||
public void onRestoreInstanceState(Bundle state) {
|
||||
super.onRestoreInstanceState(state);
|
||||
for (int page: mSynchronouslyBoundPages) {
|
||||
mWorkspace.restoreInstanceStateForChild(page);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -3360,6 +3364,10 @@ public final class Launcher extends Activity
|
||||
}
|
||||
}
|
||||
|
||||
public void onPageBoundSynchronously(int page) {
|
||||
mSynchronouslyBoundPages.add(page);
|
||||
}
|
||||
|
||||
/**
|
||||
* Callback saying that there aren't any more items to bind.
|
||||
*
|
||||
@@ -3375,10 +3383,7 @@ public final class Launcher extends Activity
|
||||
mSavedState = null;
|
||||
}
|
||||
|
||||
if (mSavedInstanceState != null) {
|
||||
super.onRestoreInstanceState(mSavedInstanceState);
|
||||
mSavedInstanceState = null;
|
||||
}
|
||||
mWorkspace.restoreInstanceStateForRemainingPages();
|
||||
|
||||
// If we received the result of any pending adds while the loader was running (e.g. the
|
||||
// widget configuration forced an orientation change), process them now.
|
||||
|
||||
@@ -155,6 +155,7 @@ public class LauncherModel extends BroadcastReceiver {
|
||||
public boolean isAllAppsVisible();
|
||||
public boolean isAllAppsButtonRank(int rank);
|
||||
public void bindSearchablesChanged();
|
||||
public void onPageBoundSynchronously(int page);
|
||||
}
|
||||
|
||||
LauncherModel(LauncherApplication app, IconCache iconCache) {
|
||||
@@ -1710,6 +1711,17 @@ public class LauncherModel extends BroadcastReceiver {
|
||||
// Load items on the current page
|
||||
bindWorkspaceItems(oldCallbacks, currentWorkspaceItems, currentAppWidgets,
|
||||
currentFolders, null);
|
||||
if (isLoadingSynchronously) {
|
||||
r = new Runnable() {
|
||||
public void run() {
|
||||
Callbacks callbacks = tryGetCallbacks(oldCallbacks);
|
||||
if (callbacks != null) {
|
||||
callbacks.onPageBoundSynchronously(currentScreen);
|
||||
}
|
||||
}
|
||||
};
|
||||
runOnMainThread(r);
|
||||
}
|
||||
|
||||
// Load all the remaining pages (if we are loading synchronously, we want to defer this
|
||||
// work until after the first render)
|
||||
|
||||
@@ -43,6 +43,7 @@ import android.os.IBinder;
|
||||
import android.os.Parcelable;
|
||||
import android.util.AttributeSet;
|
||||
import android.util.Log;
|
||||
import android.util.SparseArray;
|
||||
import android.view.Display;
|
||||
import android.view.MotionEvent;
|
||||
import android.view.View;
|
||||
@@ -224,6 +225,9 @@ public class Workspace extends SmoothPagedView
|
||||
private int mLastReorderX = -1;
|
||||
private int mLastReorderY = -1;
|
||||
|
||||
private SparseArray<Parcelable> mSavedStates;
|
||||
private final ArrayList<Integer> mRestoredPages = new ArrayList<Integer>();
|
||||
|
||||
// These variables are used for storing the initial and final values during workspace animations
|
||||
private int mSavedScrollX;
|
||||
private float mSavedRotationY;
|
||||
@@ -3419,6 +3423,32 @@ public class Workspace extends SmoothPagedView
|
||||
Launcher.setScreen(mCurrentPage);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void dispatchRestoreInstanceState(SparseArray<Parcelable> container) {
|
||||
// We don't dispatch restoreInstanceState to our children using this code path.
|
||||
// Some pages will be restored immediately as their items are bound immediately, and
|
||||
// others we will need to wait until after their items are bound.
|
||||
mSavedStates = container;
|
||||
}
|
||||
|
||||
public void restoreInstanceStateForChild(int child) {
|
||||
if (mSavedStates != null) {
|
||||
mRestoredPages.add(child);
|
||||
CellLayout cl = (CellLayout) getChildAt(child);
|
||||
cl.restoreInstanceState(mSavedStates);
|
||||
}
|
||||
}
|
||||
|
||||
public void restoreInstanceStateForRemainingPages() {
|
||||
int count = getChildCount();
|
||||
for (int i = 0; i < count; i++) {
|
||||
if (!mRestoredPages.contains(i)) {
|
||||
restoreInstanceStateForChild(i);
|
||||
}
|
||||
}
|
||||
mRestoredPages.clear();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void scrollLeft() {
|
||||
if (!isSmall() && !mIsSwitchingState) {
|
||||
|
||||
Reference in New Issue
Block a user