Fix widget resizing (Which stopped working at some point)

-> Also, deferring empty screen removal until after the drop animation
   in order to reduce buggy transitions
-> Also fixing workspace layout on tablet

Change-Id: I1ae9fdaf592262f959424f321efa6df4298f85cc
This commit is contained in:
Adam Cohen 2013-07-09 15:32:37 -07:00
parent 3bc8e17387
commit d6e7aa3154
3 changed files with 13 additions and 9 deletions

View File

@ -57,6 +57,7 @@
android:paddingEnd="@dimen/workspace_right_padding"
android:paddingTop="@dimen/workspace_top_padding"
android:paddingBottom="@dimen/workspace_bottom_padding"
android:layout_gravity="center"
launcher:defaultScreen="@integer/config_workspaceDefaultScreen"
launcher:cellCountX="@integer/cell_count_x"
launcher:cellCountY="@integer/cell_count_y"

View File

@ -58,6 +58,7 @@ public class AppWidgetResizeFrame extends FrameLayout {
int[] mDirectionVector = new int[2];
int[] mLastDirectionVector = new int[2];
int[] mTmpPt = new int[2];
final int SNAP_DURATION = 150;
final int BACKGROUND_PADDING = 24;
@ -399,18 +400,17 @@ public class AppWidgetResizeFrame extends FrameLayout {
public void snapToWidget(boolean animate) {
final DragLayer.LayoutParams lp = (DragLayer.LayoutParams) getLayoutParams();
int xOffset = mCellLayout.getLeft() + mCellLayout.getPaddingLeft()
+ mDragLayer.getPaddingLeft() - mWorkspace.getScrollX();
int yOffset = mCellLayout.getTop() + mCellLayout.getPaddingTop()
+ mDragLayer.getPaddingTop() - mWorkspace.getScrollY();
int newWidth = mWidgetView.getWidth() + 2 * mBackgroundPadding - mWidgetPaddingLeft -
mWidgetPaddingRight;
int newHeight = mWidgetView.getHeight() + 2 * mBackgroundPadding - mWidgetPaddingTop -
mWidgetPaddingBottom;
int newX = mWidgetView.getLeft() - mBackgroundPadding + xOffset + mWidgetPaddingLeft;
int newY = mWidgetView.getTop() - mBackgroundPadding + yOffset + mWidgetPaddingTop;
mTmpPt[0] = mWidgetView.getLeft();
mTmpPt[1] = mWidgetView.getTop();
mDragLayer.getDescendantCoordRelativeToSelf(mCellLayout.getShortcutsAndWidgets(), mTmpPt);
int newX = mTmpPt[0] - mBackgroundPadding + mWidgetPaddingLeft;
int newY = mTmpPt[1] - mBackgroundPadding + mWidgetPaddingTop;
// We need to make sure the frame's touchable regions lie fully within the bounds of the
// DragLayer. We allow the actual handles to be clipped, but we shift the touch regions

View File

@ -2384,6 +2384,7 @@ public class Workspace extends SmoothPagedView
if (finalResizeRunnable != null) {
finalResizeRunnable.run();
}
stripEmptyScreens();
}
};
mAnimatingViewIntoPlace = true;
@ -3364,6 +3365,10 @@ public class Workspace extends SmoothPagedView
mDragController.removeDropTarget((DropTarget) mDragInfo.cell);
}
}
// If we move the item to anything not on the Workspace, check if any empty
// screens need to be removed. If we dropped back on the workspace, this will
// be done post drop animation.
stripEmptyScreens();
}
} else if (mDragInfo != null) {
CellLayout cellLayout;
@ -3380,8 +3385,6 @@ public class Workspace extends SmoothPagedView
mDragOutline = null;
mDragInfo = null;
stripEmptyScreens();
// Hide the scrolling indicator after you pick up an item
hideScrollingIndicator(false);
}