From b90e9ee42898de3aa5aa294150d6bdaab64261d1 Mon Sep 17 00:00:00 2001 From: Jonathan White Date: Thu, 30 May 2019 23:23:04 -0400 Subject: [PATCH] Fix behavior when saving after canceling entry edit * Fixes #3141 * Clearing the entry edit widget prior to emitting the editFinished signal caused the widget to be marked modified and prevent new entries from being created. Use an explicit boolean to notify commit success. * Don't clear password generator on canceling a cancel * Don't discard changes if saving from a cancel produces an error --- src/gui/entry/EditEntryWidget.cpp | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/gui/entry/EditEntryWidget.cpp b/src/gui/entry/EditEntryWidget.cpp index 8d0f6f556..323bf22fc 100644 --- a/src/gui/entry/EditEntryWidget.cpp +++ b/src/gui/entry/EditEntryWidget.cpp @@ -962,6 +962,7 @@ void EditEntryWidget::cancel() m_entry->setIcon(Entry::DefaultIconNumber); } + bool accepted = false; if (isModified()) { auto result = MessageBox::question(this, QString(), @@ -969,18 +970,17 @@ void EditEntryWidget::cancel() MessageBox::Cancel | MessageBox::Save | MessageBox::Discard, MessageBox::Cancel); if (result == MessageBox::Cancel) { - m_mainUi->passwordGenerator->reset(); return; - } - if (result == MessageBox::Save) { - commitEntry(); - setModified(false); + } else if (result == MessageBox::Save) { + accepted = true; + if (!commitEntry()) { + return; + } } } clear(); - - emit editFinished(!isModified()); + emit editFinished(accepted); } void EditEntryWidget::clear()