diff options
author | Toni Spets <toni.spets@iki.fi> | 2020-04-13 08:30:02 +0300 |
---|---|---|
committer | Jonathan White <support@dmapps.us> | 2020-05-23 18:30:31 +0300 |
commit | a83345d13672c2ab3e7e77cd782fd66575cd773d (patch) | |
tree | eae1186d37c1ea287a77d025afd09beae04448db /src/gui | |
parent | 98566fec83bdef9aeb25e70457e4b4879ff4a8a3 (diff) |
SSH Agent: Reset settings when KeeAgent.settings is removed
Fixes #4594
Diffstat (limited to 'src/gui')
-rw-r--r-- | src/gui/DatabaseWidget.cpp | 2 | ||||
-rw-r--r-- | src/gui/entry/EditEntryWidget.cpp | 29 | ||||
-rw-r--r-- | src/gui/entry/EditEntryWidget.h | 1 |
3 files changed, 21 insertions, 11 deletions
diff --git a/src/gui/DatabaseWidget.cpp b/src/gui/DatabaseWidget.cpp index 2881705bb..a068a5b83 100644 --- a/src/gui/DatabaseWidget.cpp +++ b/src/gui/DatabaseWidget.cpp @@ -1758,7 +1758,7 @@ bool DatabaseWidget::currentEntryHasSshKey() return false; } - return KeeAgentSettings::inEntry(currentEntry); + return KeeAgentSettings::inEntryAttachments(currentEntry->attachments()); } #endif diff --git a/src/gui/entry/EditEntryWidget.cpp b/src/gui/entry/EditEntryWidget.cpp index 2036a39ba..8274968b7 100644 --- a/src/gui/entry/EditEntryWidget.cpp +++ b/src/gui/entry/EditEntryWidget.cpp @@ -532,22 +532,24 @@ void EditEntryWidget::setupSSHAgent() addPage(tr("SSH Agent"), Resources::instance()->icon("utilities-terminal"), m_sshAgentWidget); } -void EditEntryWidget::updateSSHAgent() +void EditEntryWidget::setSSHAgentSettings() { - KeeAgentSettings settings; - settings.fromEntry(m_entry); - - m_sshAgentUi->addKeyToAgentCheckBox->setChecked(settings.addAtDatabaseOpen()); - m_sshAgentUi->removeKeyFromAgentCheckBox->setChecked(settings.removeAtDatabaseClose()); - m_sshAgentUi->requireUserConfirmationCheckBox->setChecked(settings.useConfirmConstraintWhenAdding()); - m_sshAgentUi->lifetimeCheckBox->setChecked(settings.useLifetimeConstraintWhenAdding()); - m_sshAgentUi->lifetimeSpinBox->setValue(settings.lifetimeConstraintDuration()); + m_sshAgentUi->addKeyToAgentCheckBox->setChecked(m_sshAgentSettings.addAtDatabaseOpen()); + m_sshAgentUi->removeKeyFromAgentCheckBox->setChecked(m_sshAgentSettings.removeAtDatabaseClose()); + m_sshAgentUi->requireUserConfirmationCheckBox->setChecked(m_sshAgentSettings.useConfirmConstraintWhenAdding()); + m_sshAgentUi->lifetimeCheckBox->setChecked(m_sshAgentSettings.useLifetimeConstraintWhenAdding()); + m_sshAgentUi->lifetimeSpinBox->setValue(m_sshAgentSettings.lifetimeConstraintDuration()); m_sshAgentUi->attachmentComboBox->clear(); m_sshAgentUi->addToAgentButton->setEnabled(false); m_sshAgentUi->removeFromAgentButton->setEnabled(false); m_sshAgentUi->copyToClipboardButton->setEnabled(false); +} - m_sshAgentSettings = settings; +void EditEntryWidget::updateSSHAgent() +{ + m_sshAgentSettings.reset(); + m_sshAgentSettings.fromEntry(m_entry); + setSSHAgentSettings(); updateSSHAgentAttachments(); } @@ -560,6 +562,13 @@ void EditEntryWidget::updateSSHAgentAttachment() void EditEntryWidget::updateSSHAgentAttachments() { + // detect if KeeAgent.settings was removed by hand and reset settings + if (m_entry && KeeAgentSettings::inEntryAttachments(m_entry->attachments()) + && !KeeAgentSettings::inEntryAttachments(m_advancedUi->attachmentsWidget->entryAttachments())) { + m_sshAgentSettings.reset(); + setSSHAgentSettings(); + } + m_sshAgentUi->attachmentComboBox->clear(); m_sshAgentUi->attachmentComboBox->addItem(""); diff --git a/src/gui/entry/EditEntryWidget.h b/src/gui/entry/EditEntryWidget.h index e0a67b5ea..ea630d7eb 100644 --- a/src/gui/entry/EditEntryWidget.h +++ b/src/gui/entry/EditEntryWidget.h @@ -111,6 +111,7 @@ private slots: void pickColor(); #ifdef WITH_XC_SSHAGENT void toKeeAgentSettings(KeeAgentSettings& settings) const; + void setSSHAgentSettings(); void updateSSHAgent(); void updateSSHAgentAttachment(); void updateSSHAgentAttachments(); |