summaryrefslogtreecommitdiffstats
path: root/core/java/android
diff options
context:
space:
mode:
Diffstat (limited to 'core/java/android')
-rw-r--r--core/java/android/widget/ActivityChooserView.java31
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;
+ }
}
}