Merge "Fixing Launcher crash if activity restarts while resixing widget" into tm-qpr-dev am: 615f2edb76
Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Launcher3/+/19281892 Change-Id: Ib1f0339145f6816ccae726cf3b5583c3986d0fb7 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
@@ -24,6 +24,7 @@ import android.util.AttributeSet;
|
||||
import android.view.KeyEvent;
|
||||
import android.view.MotionEvent;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.ImageButton;
|
||||
import android.widget.ImageView;
|
||||
|
||||
@@ -68,22 +69,6 @@ public class AppWidgetResizeFrame extends AbstractFloatingView implements View.O
|
||||
|
||||
private final View[] mDragHandles = new View[HANDLE_COUNT];
|
||||
private final List<Rect> mSystemGestureExclusionRects = new ArrayList<>(HANDLE_COUNT);
|
||||
private final OnAttachStateChangeListener mWidgetViewAttachStateChangeListener =
|
||||
new OnAttachStateChangeListener() {
|
||||
@Override
|
||||
public void onViewAttachedToWindow(View view) {
|
||||
// Do nothing
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onViewDetachedFromWindow(View view) {
|
||||
// When the app widget view is detached, we should close the resize frame.
|
||||
// An example is when the dragging starts, the widget view is detached from
|
||||
// CellLayout and then reattached to DragLayout.
|
||||
close(false);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
private LauncherAppWidgetHostView mWidgetView;
|
||||
private CellLayout mCellLayout;
|
||||
@@ -221,11 +206,7 @@ public class AppWidgetResizeFrame extends AbstractFloatingView implements View.O
|
||||
private void setupForWidget(LauncherAppWidgetHostView widgetView, CellLayout cellLayout,
|
||||
DragLayer dragLayer) {
|
||||
mCellLayout = cellLayout;
|
||||
if (mWidgetView != null) {
|
||||
mWidgetView.removeOnAttachStateChangeListener(mWidgetViewAttachStateChangeListener);
|
||||
}
|
||||
mWidgetView = widgetView;
|
||||
mWidgetView.addOnAttachStateChangeListener(mWidgetViewAttachStateChangeListener);
|
||||
LauncherAppWidgetProviderInfo info = (LauncherAppWidgetProviderInfo)
|
||||
widgetView.getAppWidgetInfo();
|
||||
mDragLayer = dragLayer;
|
||||
@@ -423,6 +404,10 @@ public class AppWidgetResizeFrame extends AbstractFloatingView implements View.O
|
||||
* Based on the current deltas, we determine if and how to resize the widget.
|
||||
*/
|
||||
private void resizeWidgetIfNeeded(boolean onDismiss) {
|
||||
ViewGroup.LayoutParams wlp = mWidgetView.getLayoutParams();
|
||||
if (!(wlp instanceof CellLayout.LayoutParams)) {
|
||||
return;
|
||||
}
|
||||
DeviceProfile dp = mLauncher.getDeviceProfile();
|
||||
float xThreshold = mCellLayout.getCellWidth() + dp.cellLayoutBorderSpacePx.x;
|
||||
float yThreshold = mCellLayout.getCellHeight() + dp.cellLayoutBorderSpacePx.y;
|
||||
@@ -435,7 +420,7 @@ public class AppWidgetResizeFrame extends AbstractFloatingView implements View.O
|
||||
mDirectionVector[0] = 0;
|
||||
mDirectionVector[1] = 0;
|
||||
|
||||
CellLayout.LayoutParams lp = (CellLayout.LayoutParams) mWidgetView.getLayoutParams();
|
||||
CellLayout.LayoutParams lp = (CellLayout.LayoutParams) wlp;
|
||||
|
||||
int spanX = lp.cellHSpan;
|
||||
int spanY = lp.cellVSpan;
|
||||
@@ -687,9 +672,6 @@ public class AppWidgetResizeFrame extends AbstractFloatingView implements View.O
|
||||
@Override
|
||||
protected void handleClose(boolean animate) {
|
||||
mDragLayer.removeView(this);
|
||||
if (mWidgetView != null) {
|
||||
mWidgetView.removeOnAttachStateChangeListener(mWidgetViewAttachStateChangeListener);
|
||||
}
|
||||
}
|
||||
|
||||
private void updateInvalidResizeEffect(CellLayout cellLayout, CellLayout pairedCellLayout,
|
||||
|
||||
Reference in New Issue
Block a user