aboutsummaryrefslogtreecommitdiffstats
path: root/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/CertifyKeySpinner.java
diff options
context:
space:
mode:
authorDominik Schürmann <dominik@dominikschuermann.de>2015-03-15 16:24:06 +0100
committerDominik Schürmann <dominik@dominikschuermann.de>2015-03-15 16:24:06 +0100
commite873bac8803c0cf4f086d278a3ed1fd847cfb425 (patch)
tree5cb0f4a721b73d0a5088c7e90baa568a6e3bc37c /OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/CertifyKeySpinner.java
parentff60e80d42bb3d923c135c9a9b8135c61810b10a (diff)
downloadopen-keychain-e873bac8803c0cf4f086d278a3ed1fd847cfb425.tar.gz
open-keychain-e873bac8803c0cf4f086d278a3ed1fd847cfb425.tar.bz2
open-keychain-e873bac8803c0cf4f086d278a3ed1fd847cfb425.zip
Fixes for selection of certify key
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) {