diff options
| -rw-r--r-- | core/java/android/widget/ExpandableListView.java | 10 | ||||
| -rw-r--r-- | core/java/android/widget/PopupWindow.java | 1 |
2 files changed, 10 insertions, 1 deletions
diff --git a/core/java/android/widget/ExpandableListView.java b/core/java/android/widget/ExpandableListView.java index 536062168e61..6abb2ae4774e 100644 --- a/core/java/android/widget/ExpandableListView.java +++ b/core/java/android/widget/ExpandableListView.java @@ -33,6 +33,7 @@ import android.view.ContextMenu; import android.view.SoundEffectConstants; import android.view.View; import android.view.ContextMenu.ContextMenuInfo; +import android.widget.AdapterView.AdapterContextMenuInfo; import android.widget.ExpandableListConnector.PositionMetadata; /** @@ -916,7 +917,14 @@ public class ExpandableListView extends ListView { @Override ContextMenuInfo createContextMenuInfo(View view, int flatListPosition, long id) { - PositionMetadata pm = mConnector.getUnflattenedPos(flatListPosition); + // Adjust for and handle for header views + final int adjustedPosition = flatListPosition - getHeaderViewsCount(); + if (adjustedPosition < 0) { + // Return normal info for header view context menus + return new AdapterContextMenuInfo(view, flatListPosition, id); + } + + PositionMetadata pm = mConnector.getUnflattenedPos(adjustedPosition); ExpandableListPosition pos = pm.position; pm.recycle(); diff --git a/core/java/android/widget/PopupWindow.java b/core/java/android/widget/PopupWindow.java index 90fbb77d255e..548dee95d0af 100644 --- a/core/java/android/widget/PopupWindow.java +++ b/core/java/android/widget/PopupWindow.java @@ -817,6 +817,7 @@ public class PopupWindow { * @param p the layout parameters of the popup's content view */ private void invokePopup(WindowManager.LayoutParams p) { + p.packageName = mContext.getPackageName(); mWindowManager.addView(mPopupView, p); } |