diff options
| author | Fabrice Di Meglio <fdimeglio@google.com> | 2012-10-19 11:33:00 -0700 |
|---|---|---|
| committer | Android (Google) Code Review <android-gerrit@google.com> | 2012-10-19 11:33:01 -0700 |
| commit | 398a6713c355cf59af071e944268aec7c0096b5a (patch) | |
| tree | 19c57689e7738fe9cac071f86951b5b92ff41502 /core/java/android/widget/PopupWindow.java | |
| parent | ba0372db366e63fa928ba83f3ad8c064c51ac8e0 (diff) | |
| parent | b003e28c1d65d06fcb5690ff2955d007d8f7a626 (diff) | |
| download | frameworks_base-398a6713c355cf59af071e944268aec7c0096b5a.zip frameworks_base-398a6713c355cf59af071e944268aec7c0096b5a.tar.gz frameworks_base-398a6713c355cf59af071e944268aec7c0096b5a.tar.bz2 | |
Merge "Fix bug #7367429 Popup window should get its direction from it Anchor View if it can" into jb-mr1-dev
Diffstat (limited to 'core/java/android/widget/PopupWindow.java')
| -rw-r--r-- | core/java/android/widget/PopupWindow.java | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/core/java/android/widget/PopupWindow.java b/core/java/android/widget/PopupWindow.java index af3365e..b71649a 100644 --- a/core/java/android/widget/PopupWindow.java +++ b/core/java/android/widget/PopupWindow.java @@ -142,6 +142,8 @@ public class PopupWindow { }; private int mAnchorXoff, mAnchorYoff; + private boolean mPopupViewInitialLayoutDirectionInherited; + /** * <p>Create a new empty, non focusable popup window of dimension (0,0).</p> * @@ -968,6 +970,8 @@ public class PopupWindow { } else { mPopupView = mContentView; } + mPopupViewInitialLayoutDirectionInherited = + (mPopupView.getRawLayoutDirection() == View.LAYOUT_DIRECTION_INHERIT); mPopupWidth = p.width; mPopupHeight = p.height; } @@ -985,9 +989,19 @@ public class PopupWindow { p.packageName = mContext.getPackageName(); } mPopupView.setFitsSystemWindows(mLayoutInsetDecor); + setLayoutDirectionFromAnchor(); mWindowManager.addView(mPopupView, p); } + private void setLayoutDirectionFromAnchor() { + if (mAnchor != null) { + View anchor = mAnchor.get(); + if (anchor != null && mPopupViewInitialLayoutDirectionInherited) { + mPopupView.setLayoutDirection(anchor.getLayoutDirection()); + } + } + } + /** * <p>Generate the layout parameters for the popup window.</p> * @@ -1304,8 +1318,9 @@ public class PopupWindow { p.flags = newFlags; update = true; } - + if (update) { + setLayoutDirectionFromAnchor(); mWindowManager.updateViewLayout(mPopupView, p); } } @@ -1406,6 +1421,7 @@ public class PopupWindow { } if (update) { + setLayoutDirectionFromAnchor(); mWindowManager.updateViewLayout(mPopupView, p); } } @@ -1482,7 +1498,7 @@ public class PopupWindow { } else { updateAboveAnchor(findDropDownPosition(anchor, p, mAnchorXoff, mAnchorYoff)); } - + update(p.x, p.y, width, height, x != p.x || y != p.y); } |
