diff options
| -rw-r--r-- | core/java/com/android/internal/app/ResolverActivity.java | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/core/java/com/android/internal/app/ResolverActivity.java b/core/java/com/android/internal/app/ResolverActivity.java index 0d9f7bc05553..ff8a6d2d811b 100644 --- a/core/java/com/android/internal/app/ResolverActivity.java +++ b/core/java/com/android/internal/app/ResolverActivity.java @@ -76,6 +76,7 @@ public class ResolverActivity extends AlertActivity implements AdapterView.OnIte private int mIconDpi; private int mIconSize; private int mMaxColumns; + private int mLastSelected = GridView.INVALID_POSITION; private boolean mRegistered; private final PackageMonitor mPackageMonitor = new PackageMonitor() { @@ -247,6 +248,7 @@ public class ResolverActivity extends AlertActivity implements AdapterView.OnIte if (mAlwaysUseOption) { final int checkedPos = mGrid.getCheckedItemPosition(); final boolean enabled = checkedPos != GridView.INVALID_POSITION; + mLastSelected = checkedPos; mAlwaysButton.setEnabled(enabled); mOnceButton.setEnabled(enabled); if (enabled) { @@ -257,14 +259,15 @@ public class ResolverActivity extends AlertActivity implements AdapterView.OnIte @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { - if (mAlwaysUseOption) { - final int checkedPos = mGrid.getCheckedItemPosition(); - final boolean enabled = checkedPos != GridView.INVALID_POSITION; - mAlwaysButton.setEnabled(enabled); - mOnceButton.setEnabled(enabled); - if (enabled) { + final int checkedPos = mGrid.getCheckedItemPosition(); + final boolean hasValidSelection = checkedPos != GridView.INVALID_POSITION; + if (!hasValidSelection || (mAlwaysUseOption && mLastSelected != checkedPos)) { + mAlwaysButton.setEnabled(hasValidSelection); + mOnceButton.setEnabled(hasValidSelection); + if (hasValidSelection) { mGrid.smoothScrollToPosition(checkedPos); } + mLastSelected = checkedPos; } else { startSelected(position, false); } |