Loading core/java/com/android/internal/app/ActionBarImpl.java +1 −1 Original line number Diff line number Diff line Loading @@ -616,7 +616,7 @@ public class ActionBarImpl extends ActionBar { public int getSelectedNavigationIndex() { switch (mActionView.getNavigationMode()) { case NAVIGATION_MODE_TABS: return mSelectedTab.getPosition(); return mSelectedTab != null ? mSelectedTab.getPosition() : -1; case NAVIGATION_MODE_LIST: return mActionView.getDropdownSelectedPosition(); default: Loading core/java/com/android/internal/view/menu/MenuPopupHelper.java +30 −6 Original line number Diff line number Diff line Loading @@ -24,6 +24,7 @@ import android.view.KeyEvent; import android.view.MenuItem; import android.view.View; import android.view.View.MeasureSpec; import android.view.ViewTreeObserver; import android.widget.AdapterView; import android.widget.ListPopupWindow; import android.widget.PopupWindow; Loading @@ -33,7 +34,8 @@ import java.lang.ref.WeakReference; /** * @hide */ public class MenuPopupHelper implements AdapterView.OnItemClickListener, View.OnKeyListener { public class MenuPopupHelper implements AdapterView.OnItemClickListener, View.OnKeyListener, ViewTreeObserver.OnGlobalLayoutListener { private static final String TAG = "MenuPopupHelper"; private Context mContext; Loading @@ -42,6 +44,7 @@ public class MenuPopupHelper implements AdapterView.OnItemClickListener, View.On private int mPopupMaxWidth; private WeakReference<View> mAnchorView; private boolean mOverflowOnly; private ViewTreeObserver mTreeObserver; private PopupWindow.OnDismissListener mDismissListener = new PopupWindow.OnDismissListener() { public void onDismiss() { Loading Loading @@ -82,12 +85,18 @@ public class MenuPopupHelper implements AdapterView.OnItemClickListener, View.On mPopup.setAdapter(adapter); mPopup.setModal(true); if (mAnchorView != null) { mPopup.setAnchorView(mAnchorView.get()); } else if (mMenu instanceof SubMenuBuilder) { View anchor = mAnchorView != null ? mAnchorView.get() : null; if (anchor == null && mMenu instanceof SubMenuBuilder) { SubMenuBuilder subMenu = (SubMenuBuilder) mMenu; final MenuItemImpl itemImpl = (MenuItemImpl) subMenu.getItem(); mPopup.setAnchorView(itemImpl.getItemView(MenuBuilder.TYPE_ACTION_BUTTON, null)); anchor = itemImpl.getItemView(MenuBuilder.TYPE_ACTION_BUTTON, null); mAnchorView = new WeakReference<View>(anchor); } if (anchor != null) { mTreeObserver = anchor.getViewTreeObserver(); mTreeObserver.addOnGlobalLayoutListener(this); mPopup.setAnchorView(anchor); } else { throw new IllegalStateException("MenuPopupHelper cannot be used without an anchor"); } Loading @@ -101,6 +110,8 @@ public class MenuPopupHelper implements AdapterView.OnItemClickListener, View.On if (isShowing()) { mPopup.dismiss(); } mTreeObserver.removeGlobalOnLayoutListener(this); mTreeObserver = null; } public boolean isShowing() { Loading @@ -115,7 +126,7 @@ public class MenuPopupHelper implements AdapterView.OnItemClickListener, View.On item = mMenu.getItem(position); } mMenu.performItemAction(item, 0); mPopup.dismiss(); dismiss(); } public boolean onKey(View v, int keyCode, KeyEvent event) { Loading @@ -142,4 +153,17 @@ public class MenuPopupHelper implements AdapterView.OnItemClickListener, View.On } return width; } @Override public void onGlobalLayout() { if (!isShowing()) { mTreeObserver.removeGlobalOnLayoutListener(this); mTreeObserver = null; } else { final View anchor = mAnchorView != null ? mAnchorView.get() : null; if (anchor != null && !anchor.isShown()) { dismiss(); } } } } core/java/com/android/internal/widget/ActionBarView.java +1 −0 Original line number Diff line number Diff line Loading @@ -330,6 +330,7 @@ public class ActionBarView extends ViewGroup { mSubtitle = subtitle; if (mSubtitleView != null) { mSubtitleView.setText(subtitle); mSubtitleView.setVisibility(subtitle != null ? VISIBLE : GONE); } } Loading Loading
core/java/com/android/internal/app/ActionBarImpl.java +1 −1 Original line number Diff line number Diff line Loading @@ -616,7 +616,7 @@ public class ActionBarImpl extends ActionBar { public int getSelectedNavigationIndex() { switch (mActionView.getNavigationMode()) { case NAVIGATION_MODE_TABS: return mSelectedTab.getPosition(); return mSelectedTab != null ? mSelectedTab.getPosition() : -1; case NAVIGATION_MODE_LIST: return mActionView.getDropdownSelectedPosition(); default: Loading
core/java/com/android/internal/view/menu/MenuPopupHelper.java +30 −6 Original line number Diff line number Diff line Loading @@ -24,6 +24,7 @@ import android.view.KeyEvent; import android.view.MenuItem; import android.view.View; import android.view.View.MeasureSpec; import android.view.ViewTreeObserver; import android.widget.AdapterView; import android.widget.ListPopupWindow; import android.widget.PopupWindow; Loading @@ -33,7 +34,8 @@ import java.lang.ref.WeakReference; /** * @hide */ public class MenuPopupHelper implements AdapterView.OnItemClickListener, View.OnKeyListener { public class MenuPopupHelper implements AdapterView.OnItemClickListener, View.OnKeyListener, ViewTreeObserver.OnGlobalLayoutListener { private static final String TAG = "MenuPopupHelper"; private Context mContext; Loading @@ -42,6 +44,7 @@ public class MenuPopupHelper implements AdapterView.OnItemClickListener, View.On private int mPopupMaxWidth; private WeakReference<View> mAnchorView; private boolean mOverflowOnly; private ViewTreeObserver mTreeObserver; private PopupWindow.OnDismissListener mDismissListener = new PopupWindow.OnDismissListener() { public void onDismiss() { Loading Loading @@ -82,12 +85,18 @@ public class MenuPopupHelper implements AdapterView.OnItemClickListener, View.On mPopup.setAdapter(adapter); mPopup.setModal(true); if (mAnchorView != null) { mPopup.setAnchorView(mAnchorView.get()); } else if (mMenu instanceof SubMenuBuilder) { View anchor = mAnchorView != null ? mAnchorView.get() : null; if (anchor == null && mMenu instanceof SubMenuBuilder) { SubMenuBuilder subMenu = (SubMenuBuilder) mMenu; final MenuItemImpl itemImpl = (MenuItemImpl) subMenu.getItem(); mPopup.setAnchorView(itemImpl.getItemView(MenuBuilder.TYPE_ACTION_BUTTON, null)); anchor = itemImpl.getItemView(MenuBuilder.TYPE_ACTION_BUTTON, null); mAnchorView = new WeakReference<View>(anchor); } if (anchor != null) { mTreeObserver = anchor.getViewTreeObserver(); mTreeObserver.addOnGlobalLayoutListener(this); mPopup.setAnchorView(anchor); } else { throw new IllegalStateException("MenuPopupHelper cannot be used without an anchor"); } Loading @@ -101,6 +110,8 @@ public class MenuPopupHelper implements AdapterView.OnItemClickListener, View.On if (isShowing()) { mPopup.dismiss(); } mTreeObserver.removeGlobalOnLayoutListener(this); mTreeObserver = null; } public boolean isShowing() { Loading @@ -115,7 +126,7 @@ public class MenuPopupHelper implements AdapterView.OnItemClickListener, View.On item = mMenu.getItem(position); } mMenu.performItemAction(item, 0); mPopup.dismiss(); dismiss(); } public boolean onKey(View v, int keyCode, KeyEvent event) { Loading @@ -142,4 +153,17 @@ public class MenuPopupHelper implements AdapterView.OnItemClickListener, View.On } return width; } @Override public void onGlobalLayout() { if (!isShowing()) { mTreeObserver.removeGlobalOnLayoutListener(this); mTreeObserver = null; } else { final View anchor = mAnchorView != null ? mAnchorView.get() : null; if (anchor != null && !anchor.isShown()) { dismiss(); } } } }
core/java/com/android/internal/widget/ActionBarView.java +1 −0 Original line number Diff line number Diff line Loading @@ -330,6 +330,7 @@ public class ActionBarView extends ViewGroup { mSubtitle = subtitle; if (mSubtitleView != null) { mSubtitleView.setText(subtitle); mSubtitleView.setVisibility(subtitle != null ? VISIBLE : GONE); } } Loading