am 4877b85a: Merge "ActivityChooserView not showing highest ranked target if default action not shown."
* commit '4877b85aea6ae1e4c486e28fc5c684ea02fe82be': ActivityChooserView not showing highest ranked target if default action not shown.
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user