aboutsummaryrefslogtreecommitdiffstats
path: root/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/CertifyKeySpinner.java
diff options
context:
space:
mode:
Diffstat (limited to 'OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/CertifyKeySpinner.java')
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/CertifyKeySpinner.java25
1 files changed, 17 insertions, 8 deletions
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/CertifyKeySpinner.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/CertifyKeySpinner.java
index fb6b84f58..460163a47 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/CertifyKeySpinner.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/CertifyKeySpinner.java
@@ -93,22 +93,31 @@ public class CertifyKeySpinner extends KeySpinner {
mIndexIsRevoked = data.getColumnIndex(KeychainContract.KeyRings.IS_REVOKED);
mIndexIsExpired = data.getColumnIndex(KeychainContract.KeyRings.IS_EXPIRED);
- // If there is more than one choice, pick a key
- if (mAdapter.getCount() >= 2) {
+ // If:
+ // - no key has been pre-selected (e.g. by SageSlinger)
+ // - there are actually keys (not just "none" entry)
+ // Then:
+ // - select key that is capable of certifying, but only if there is only one key capable of it
+ if (mSelectedKeyId == Constants.key.none && mAdapter.getCount() > 1) {
// preselect if key can certify
- if (data.moveToPosition(0)) {
- do {
- if (!data.isNull(mIndexHasCertify)) {
- setSelection(data.getPosition() + 1);
- break;
+ int selection = -1;
+ while (data.moveToNext()) {
+ if (!data.isNull(mIndexHasCertify)) {
+ if (selection == -1) {
+ selection = data.getPosition() + 1;
+ } else {
+ // if selection is already set, we have more than one certify key!
+ // get back to "none"!
+ selection = 0;
}
}
- while (data.moveToNext());
}
+ setSelection(selection);
}
}
}
+
@Override
boolean setStatus(Context context, Cursor cursor, ImageView statusView) {
if (cursor.getInt(mIndexIsRevoked) != 0) {