diff --git a/src/gui/entry/EditEntryWidget.cpp b/src/gui/entry/EditEntryWidget.cpp index d2213a669..39850d9b5 100644 --- a/src/gui/entry/EditEntryWidget.cpp +++ b/src/gui/entry/EditEntryWidget.cpp @@ -661,6 +661,12 @@ void EditEntryWidget::updateSSHAgentAttachments() setSSHAgentSettings(); } + if (KeeAgentSettings::inEntryAttachments(m_attachments.data())) { + m_sshAgentSettings.reset(); + m_sshAgentSettings.fromEntryAttachments(m_attachments.data()); + setSSHAgentSettings(); + } + m_sshAgentUi->attachmentComboBox->clear(); m_sshAgentUi->attachmentComboBox->addItem(""); diff --git a/src/sshagent/KeeAgentSettings.cpp b/src/sshagent/KeeAgentSettings.cpp index 0d3084742..ccf48f912 100644 --- a/src/sshagent/KeeAgentSettings.cpp +++ b/src/sshagent/KeeAgentSettings.cpp @@ -533,7 +533,19 @@ bool KeeAgentSettings::inEntryAttachments(const EntryAttachments* attachments) */ bool KeeAgentSettings::fromEntry(const Entry* entry) { - const auto attachments = entry->attachments(); + return KeeAgentSettings::fromEntryAttachments(entry->attachments()); +} + +/** + * Read settings from entry attachments as an XML attachment. + * + * Sets error string on error. + * + * @param entry EntryAttachments to read the attachment from + * @return true if XML document was loaded + */ +bool KeeAgentSettings::fromEntryAttachments(const EntryAttachments* attachments) +{ if (attachments->hasKey("KeeAgent.settings")) { return fromXml(attachments->value("KeeAgent.settings")); } diff --git a/src/sshagent/KeeAgentSettings.h b/src/sshagent/KeeAgentSettings.h index d3a6da16e..4b63019c3 100644 --- a/src/sshagent/KeeAgentSettings.h +++ b/src/sshagent/KeeAgentSettings.h @@ -61,6 +61,7 @@ public: static bool inEntryAttachments(const EntryAttachments* attachments); bool fromEntry(const Entry* entry); + bool fromEntryAttachments(const EntryAttachments* attachments); void toEntry(Entry* entry) const; bool keyConfigured() const; bool toOpenSSHKey(const Entry* entry, OpenSSHKey& key, bool decrypt);