diff options
author | Svetoslav Ganov <svetoslavganov@google.com> | 2011-09-20 17:41:59 -0700 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2011-09-20 17:41:59 -0700 |
commit | 4877b85aea6ae1e4c486e28fc5c684ea02fe82be (patch) | |
tree | b0ea80c70a2e32c98609689667bb83d83f8d9b7a /core/java/android/widget/ActivityChooserView.java | |
parent | cc05623d51b435458130070164b5b30d06b1ff58 (diff) | |
parent | efab4e7f59835cb2ea9fdc42cc8fd9ea3771d261 (diff) | |
download | frameworks_base-4877b85aea6ae1e4c486e28fc5c684ea02fe82be.zip frameworks_base-4877b85aea6ae1e4c486e28fc5c684ea02fe82be.tar.gz frameworks_base-4877b85aea6ae1e4c486e28fc5c684ea02fe82be.tar.bz2 |
Merge "ActivityChooserView not showing highest ranked target if default action not shown."
Diffstat (limited to 'core/java/android/widget/ActivityChooserView.java')
-rw-r--r-- | core/java/android/widget/ActivityChooserView.java | 31 |
1 files changed, 21 insertions, 10 deletions
diff --git a/core/java/android/widget/ActivityChooserView.java b/core/java/android/widget/ActivityChooserView.java index 312303d..25af3fa 100644 --- a/core/java/android/widget/ActivityChooserView.java +++ b/core/java/android/widget/ActivityChooserView.java @@ -23,12 +23,10 @@ import android.content.pm.ResolveInfo; import android.content.res.Resources; import android.content.res.TypedArray; import android.database.DataSetObserver; -import android.graphics.Canvas; import android.graphics.drawable.Drawable; import android.util.AttributeSet; import android.view.LayoutInflater; import android.view.View; -import android.view.View.MeasureSpec; import android.view.ViewGroup; import android.view.ViewTreeObserver; import android.view.ViewTreeObserver.OnGlobalLayoutListener; @@ -299,10 +297,12 @@ public class ActivityChooserView extends ViewGroup implements ActivityChooserMod ListPopupWindow popupWindow = getListPopupWindow(); if (!popupWindow.isShowing()) { - if (mIsSelectingDefaultActivity) { - mAdapter.setShowDefaultActivity(true); + final boolean defaultActivityButtonShown = + mDefaultActivityButton.getVisibility() == VISIBLE; + if (mIsSelectingDefaultActivity || !defaultActivityButtonShown) { + mAdapter.setShowDefaultActivity(true, defaultActivityButtonShown); } else { - mAdapter.setShowDefaultActivity(false); + mAdapter.setShowDefaultActivity(false, false); } final int contentWidth = Math.min(mAdapter.measureContentWidth(), mListPopupMaxWidth); popupWindow.setContentWidth(contentWidth); @@ -476,8 +476,10 @@ public class ActivityChooserView extends ViewGroup implements ActivityChooserMod mAdapter.getDataModel().setDefaultActivity(position); } } else { - // The first item in the model is default action => adjust index - Intent launchIntent = mAdapter.getDataModel().chooseActivity(position + 1); + // If the default target is not shown in the list, the first + // item in the model is default action => adjust index + position = mAdapter.getShowDefaultActivity() ? position : position + 1; + Intent launchIntent = mAdapter.getDataModel().chooseActivity(position); if (launchIntent != null) { mContext.startActivity(launchIntent); } @@ -553,6 +555,8 @@ public class ActivityChooserView extends ViewGroup implements ActivityChooserMod private boolean mShowDefaultActivity; + private boolean mHighlightDefaultActivity; + private boolean mShowFooterView; public void setDataModel(ActivityChooserModel dataModel) { @@ -640,7 +644,7 @@ public class ActivityChooserView extends ViewGroup implements ActivityChooserMod TextView titleView = (TextView) convertView.findViewById(R.id.title); titleView.setText(activity.loadLabel(packageManager)); // Highlight the default. - if (mShowDefaultActivity && position == 0) { + if (mShowDefaultActivity && position == 0 && mHighlightDefaultActivity) { convertView.setActivated(true); } else { convertView.setActivated(false); @@ -709,11 +713,18 @@ public class ActivityChooserView extends ViewGroup implements ActivityChooserMod return mDataModel; } - public void setShowDefaultActivity(boolean showDefaultActivity) { - if (mShowDefaultActivity != showDefaultActivity) { + public void setShowDefaultActivity(boolean showDefaultActivity, + boolean highlightDefaultActivity) { + if (mShowDefaultActivity != showDefaultActivity + || mHighlightDefaultActivity != highlightDefaultActivity) { mShowDefaultActivity = showDefaultActivity; + mHighlightDefaultActivity = highlightDefaultActivity; notifyDataSetChanged(); } } + + public boolean getShowDefaultActivity() { + return mShowDefaultActivity; + } } } |