Merge "ActivityChooserView not showing highest ranked target if default action not shown."
This commit is contained in:
committed by
Android (Google) Code Review
commit
4877b85aea
@@ -23,12 +23,10 @@ import android.content.pm.ResolveInfo;
|
|||||||
import android.content.res.Resources;
|
import android.content.res.Resources;
|
||||||
import android.content.res.TypedArray;
|
import android.content.res.TypedArray;
|
||||||
import android.database.DataSetObserver;
|
import android.database.DataSetObserver;
|
||||||
import android.graphics.Canvas;
|
|
||||||
import android.graphics.drawable.Drawable;
|
import android.graphics.drawable.Drawable;
|
||||||
import android.util.AttributeSet;
|
import android.util.AttributeSet;
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.View.MeasureSpec;
|
|
||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
import android.view.ViewTreeObserver;
|
import android.view.ViewTreeObserver;
|
||||||
import android.view.ViewTreeObserver.OnGlobalLayoutListener;
|
import android.view.ViewTreeObserver.OnGlobalLayoutListener;
|
||||||
@@ -299,10 +297,12 @@ public class ActivityChooserView extends ViewGroup implements ActivityChooserMod
|
|||||||
|
|
||||||
ListPopupWindow popupWindow = getListPopupWindow();
|
ListPopupWindow popupWindow = getListPopupWindow();
|
||||||
if (!popupWindow.isShowing()) {
|
if (!popupWindow.isShowing()) {
|
||||||
if (mIsSelectingDefaultActivity) {
|
final boolean defaultActivityButtonShown =
|
||||||
mAdapter.setShowDefaultActivity(true);
|
mDefaultActivityButton.getVisibility() == VISIBLE;
|
||||||
|
if (mIsSelectingDefaultActivity || !defaultActivityButtonShown) {
|
||||||
|
mAdapter.setShowDefaultActivity(true, defaultActivityButtonShown);
|
||||||
} else {
|
} else {
|
||||||
mAdapter.setShowDefaultActivity(false);
|
mAdapter.setShowDefaultActivity(false, false);
|
||||||
}
|
}
|
||||||
final int contentWidth = Math.min(mAdapter.measureContentWidth(), mListPopupMaxWidth);
|
final int contentWidth = Math.min(mAdapter.measureContentWidth(), mListPopupMaxWidth);
|
||||||
popupWindow.setContentWidth(contentWidth);
|
popupWindow.setContentWidth(contentWidth);
|
||||||
@@ -476,8 +476,10 @@ public class ActivityChooserView extends ViewGroup implements ActivityChooserMod
|
|||||||
mAdapter.getDataModel().setDefaultActivity(position);
|
mAdapter.getDataModel().setDefaultActivity(position);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// The first item in the model is default action => adjust index
|
// If the default target is not shown in the list, the first
|
||||||
Intent launchIntent = mAdapter.getDataModel().chooseActivity(position + 1);
|
// item in the model is default action => adjust index
|
||||||
|
position = mAdapter.getShowDefaultActivity() ? position : position + 1;
|
||||||
|
Intent launchIntent = mAdapter.getDataModel().chooseActivity(position);
|
||||||
if (launchIntent != null) {
|
if (launchIntent != null) {
|
||||||
mContext.startActivity(launchIntent);
|
mContext.startActivity(launchIntent);
|
||||||
}
|
}
|
||||||
@@ -553,6 +555,8 @@ public class ActivityChooserView extends ViewGroup implements ActivityChooserMod
|
|||||||
|
|
||||||
private boolean mShowDefaultActivity;
|
private boolean mShowDefaultActivity;
|
||||||
|
|
||||||
|
private boolean mHighlightDefaultActivity;
|
||||||
|
|
||||||
private boolean mShowFooterView;
|
private boolean mShowFooterView;
|
||||||
|
|
||||||
public void setDataModel(ActivityChooserModel dataModel) {
|
public void setDataModel(ActivityChooserModel dataModel) {
|
||||||
@@ -640,7 +644,7 @@ public class ActivityChooserView extends ViewGroup implements ActivityChooserMod
|
|||||||
TextView titleView = (TextView) convertView.findViewById(R.id.title);
|
TextView titleView = (TextView) convertView.findViewById(R.id.title);
|
||||||
titleView.setText(activity.loadLabel(packageManager));
|
titleView.setText(activity.loadLabel(packageManager));
|
||||||
// Highlight the default.
|
// Highlight the default.
|
||||||
if (mShowDefaultActivity && position == 0) {
|
if (mShowDefaultActivity && position == 0 && mHighlightDefaultActivity) {
|
||||||
convertView.setActivated(true);
|
convertView.setActivated(true);
|
||||||
} else {
|
} else {
|
||||||
convertView.setActivated(false);
|
convertView.setActivated(false);
|
||||||
@@ -709,11 +713,18 @@ public class ActivityChooserView extends ViewGroup implements ActivityChooserMod
|
|||||||
return mDataModel;
|
return mDataModel;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setShowDefaultActivity(boolean showDefaultActivity) {
|
public void setShowDefaultActivity(boolean showDefaultActivity,
|
||||||
if (mShowDefaultActivity != showDefaultActivity) {
|
boolean highlightDefaultActivity) {
|
||||||
|
if (mShowDefaultActivity != showDefaultActivity
|
||||||
|
|| mHighlightDefaultActivity != highlightDefaultActivity) {
|
||||||
mShowDefaultActivity = showDefaultActivity;
|
mShowDefaultActivity = showDefaultActivity;
|
||||||
|
mHighlightDefaultActivity = highlightDefaultActivity;
|
||||||
notifyDataSetChanged();
|
notifyDataSetChanged();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean getShowDefaultActivity() {
|
||||||
|
return mShowDefaultActivity;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user