summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Chong Zhang <chz@google.com> 2016-01-04 18:32:16 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2016-01-04 18:32:16 +0000
commitfe34f6c1985d0f86c0e99f86dc64a09c39ac45ac (patch)
tree1f4b558f145e9fc52d4ff63d259f21b2d1c79edc
parentdb4da1bd209d4ee58868bdfc428b8b639b8ee7c9 (diff)
parent7c9732db0e450785f70d634fee4037b5e887d911 (diff)
Merge "Fix popup window position calculation in multiwindow mode"
-rw-r--r--core/java/android/widget/PopupWindow.java13
1 files changed, 9 insertions, 4 deletions
diff --git a/core/java/android/widget/PopupWindow.java b/core/java/android/widget/PopupWindow.java
index 19e290b71a97..7e981939034b 100644
--- a/core/java/android/widget/PopupWindow.java
+++ b/core/java/android/widget/PopupWindow.java
@@ -1467,10 +1467,14 @@ public class PopupWindow {
}
if (mClipToScreen) {
+ final int winOffsetX = mScreenLocation[0] - mDrawingLocation[0];
+ final int winOffsetY = mScreenLocation[1] - mDrawingLocation[1];
+ p.x += winOffsetX;
+ p.y += winOffsetY;
final int displayFrameWidth = displayFrame.right - displayFrame.left;
final int right = p.x + p.width;
- if (right > displayFrameWidth) {
- p.x -= right - displayFrameWidth;
+ if (right > displayFrame.right) {
+ p.x -= right - displayFrame.right;
}
if (p.x < displayFrame.left) {
@@ -1479,10 +1483,9 @@ public class PopupWindow {
}
if (mOverlapAnchor) {
- final int displayFrameHeight = displayFrame.bottom - displayFrame.top;
final int bottom = p.y + p.height;
if (bottom > displayFrame.bottom) {
- p.y -= bottom - displayFrameHeight;
+ p.y -= bottom - displayFrame.bottom;
}
} else {
if (onTop) {
@@ -1494,6 +1497,8 @@ public class PopupWindow {
p.y = Math.max(p.y, displayFrame.top);
}
}
+ p.x -= winOffsetX;
+ p.y -= winOffsetY;
}
p.gravity |= Gravity.DISPLAY_CLIP_VERTICAL;