Skip to content

Commit d81cc4a

Browse files
committed
Easy "Just once" launches from ResolverActivity
Allow a second tap of a selected item in ResolverActivity to launch the target as "just once" for sloppier/quicker choices. Change-Id: If05fc7c1ac622195f6253e6ca0868fd87954dd46
1 parent 1825b98 commit d81cc4a

File tree

1 file changed

+9
-6
lines changed

1 file changed

+9
-6
lines changed

core/java/com/android/internal/app/ResolverActivity.java

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,7 @@ public class ResolverActivity extends AlertActivity implements AdapterView.OnIte
7676
private int mIconDpi;
7777
private int mIconSize;
7878
private int mMaxColumns;
79+
private int mLastSelected = GridView.INVALID_POSITION;
7980

8081
private boolean mRegistered;
8182
private final PackageMonitor mPackageMonitor = new PackageMonitor() {
@@ -247,6 +248,7 @@ protected void onRestoreInstanceState(Bundle savedInstanceState) {
247248
if (mAlwaysUseOption) {
248249
final int checkedPos = mGrid.getCheckedItemPosition();
249250
final boolean enabled = checkedPos != GridView.INVALID_POSITION;
251+
mLastSelected = checkedPos;
250252
mAlwaysButton.setEnabled(enabled);
251253
mOnceButton.setEnabled(enabled);
252254
if (enabled) {
@@ -257,14 +259,15 @@ protected void onRestoreInstanceState(Bundle savedInstanceState) {
257259

258260
@Override
259261
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
260-
if (mAlwaysUseOption) {
261-
final int checkedPos = mGrid.getCheckedItemPosition();
262-
final boolean enabled = checkedPos != GridView.INVALID_POSITION;
263-
mAlwaysButton.setEnabled(enabled);
264-
mOnceButton.setEnabled(enabled);
265-
if (enabled) {
262+
final int checkedPos = mGrid.getCheckedItemPosition();
263+
final boolean hasValidSelection = checkedPos != GridView.INVALID_POSITION;
264+
if (!hasValidSelection || (mAlwaysUseOption && mLastSelected != checkedPos)) {
265+
mAlwaysButton.setEnabled(hasValidSelection);
266+
mOnceButton.setEnabled(hasValidSelection);
267+
if (hasValidSelection) {
266268
mGrid.smoothScrollToPosition(checkedPos);
267269
}
270+
mLastSelected = checkedPos;
268271
} else {
269272
startSelected(position, false);
270273
}

0 commit comments

Comments
 (0)