diff options
author | Jonathan Miranda <jonmiranda@google.com> | 2017-01-09 19:48:01 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2017-01-09 19:48:01 +0000 |
commit | e09bacc1ef50aa7c4fe551a7360d7f5613927ee9 (patch) | |
tree | 78bba4bca9e6361a60c6b3d3fe10b04f7231b145 /src | |
parent | 2c3194e87977c06a72e54e63745f790d619e77ed (diff) | |
parent | 097a725bb8d5a4c7322b3ddfb1861e52a1ba457c (diff) | |
download | android_packages_apps_Trebuchet-e09bacc1ef50aa7c4fe551a7360d7f5613927ee9.tar.gz android_packages_apps_Trebuchet-e09bacc1ef50aa7c4fe551a7360d7f5613927ee9.tar.bz2 android_packages_apps_Trebuchet-e09bacc1ef50aa7c4fe551a7360d7f5613927ee9.zip |
Merge "Fixed mw bug where resize frame is off when resizing." into ub-launcher3-master
Diffstat (limited to 'src')
-rw-r--r-- | src/com/android/launcher3/AppWidgetResizeFrame.java | 54 |
1 files changed, 44 insertions, 10 deletions
diff --git a/src/com/android/launcher3/AppWidgetResizeFrame.java b/src/com/android/launcher3/AppWidgetResizeFrame.java index f8792163c..92da9b7ed 100644 --- a/src/com/android/launcher3/AppWidgetResizeFrame.java +++ b/src/com/android/launcher3/AppWidgetResizeFrame.java @@ -212,6 +212,23 @@ public class AppWidgetResizeFrame extends FrameLayout lp.height = mTempRange1.size(); resizeWidgetIfNeeded(false); + + // When the widget resizes in multi-window mode, the translation value changes to maintain + // a center fit. These overrides ensure the resize frame always aligns with the widget view. + getSnappedRectRelativeToDragLayer(sTmpRect); + if (mLeftBorderActive) { + lp.width = sTmpRect.width() + sTmpRect.left - lp.x; + } + if (mTopBorderActive) { + lp.height = sTmpRect.height() + sTmpRect.top - lp.y; + } + if (mRightBorderActive) { + lp.x = sTmpRect.left; + } + if (mBottomBorderActive) { + lp.y = sTmpRect.top; + } + requestLayout(); } @@ -340,8 +357,8 @@ public class AppWidgetResizeFrame extends FrameLayout int xThreshold = mCellLayout.getCellWidth(); int yThreshold = mCellLayout.getCellHeight(); - mDeltaXAddOn = mRunningHInc * xThreshold; - mDeltaYAddOn = mRunningVInc * yThreshold; + mDeltaXAddOn = mRunningHInc * xThreshold; + mDeltaYAddOn = mRunningVInc * yThreshold; mDeltaX = 0; mDeltaY = 0; @@ -353,18 +370,35 @@ public class AppWidgetResizeFrame extends FrameLayout }); } - public void snapToWidget(boolean animate) { + /** + * Returns the rect of this view when the frame is snapped around the widget, with the bounds + * relative to the {@link DragLayer}. + */ + private void getSnappedRectRelativeToDragLayer(Rect out) { float scale = mWidgetView.getScaleToFit(); - mDragLayer.getViewRectRelativeToSelf(mWidgetView, sTmpRect); + mDragLayer.getViewRectRelativeToSelf(mWidgetView, out); + + int width = 2 * mBackgroundPadding + + (int) (scale * (out.width() - mWidgetPadding.left - mWidgetPadding.right)); + int height = 2 * mBackgroundPadding + + (int) (scale * (out.height() - mWidgetPadding.top - mWidgetPadding.bottom)); - int newWidth = 2 * mBackgroundPadding - + (int) (scale * (sTmpRect.width() - mWidgetPadding.left - mWidgetPadding.right)); - int newHeight = 2 * mBackgroundPadding - + (int) (scale * (sTmpRect.height() - mWidgetPadding.top - mWidgetPadding.bottom)); + int x = (int) (out.left - mBackgroundPadding + scale * mWidgetPadding.left); + int y = (int) (out.top - mBackgroundPadding + scale * mWidgetPadding.top); - int newX = (int) (sTmpRect.left - mBackgroundPadding + scale * mWidgetPadding.left); - int newY = (int) (sTmpRect.top - mBackgroundPadding + scale * mWidgetPadding.top); + out.left = x; + out.top = y; + out.right = out.left + width; + out.bottom = out.top + height; + } + + public void snapToWidget(boolean animate) { + getSnappedRectRelativeToDragLayer(sTmpRect); + int newWidth = sTmpRect.width(); + int newHeight = sTmpRect.height(); + int newX = sTmpRect.left; + int newY = sTmpRect.top; // 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 |