summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJonathan Miranda <jonmiranda@google.com>2017-01-09 19:48:01 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2017-01-09 19:48:01 +0000
commite09bacc1ef50aa7c4fe551a7360d7f5613927ee9 (patch)
tree78bba4bca9e6361a60c6b3d3fe10b04f7231b145 /src
parent2c3194e87977c06a72e54e63745f790d619e77ed (diff)
parent097a725bb8d5a4c7322b3ddfb1861e52a1ba457c (diff)
downloadandroid_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.java54
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