From 240939ce3b83267cbb0e203b32ead6d45d0919a4 Mon Sep 17 00:00:00 2001 From: Daniel Wilches Date: Sat, 17 Mar 2018 14:31:15 -0700 Subject: [PATCH] Request confirmation to discard unsaved changes Solves #1181 --- src/gui/entry/EditEntryWidget.cpp | 13 +++++++++++++ tests/gui/TestGui.cpp | 1 + 2 files changed, 14 insertions(+) diff --git a/src/gui/entry/EditEntryWidget.cpp b/src/gui/entry/EditEntryWidget.cpp index b29012e89..8163a648c 100644 --- a/src/gui/entry/EditEntryWidget.cpp +++ b/src/gui/entry/EditEntryWidget.cpp @@ -927,6 +927,19 @@ void EditEntryWidget::cancel() m_entry->setIcon(Entry::DefaultIconNumber); } + if (!m_saved) { + auto result = MessageBox::question(this, QString(), tr("Entry has unsaved changes"), + QMessageBox::Cancel | QMessageBox::Save | QMessageBox::Discard, + QMessageBox::Cancel); + if (result == QMessageBox::Cancel) { + return; + } + if (result == QMessageBox::Save) { + commitEntry(); + m_saved = true; + } + } + clear(); emit editFinished(m_saved); diff --git a/tests/gui/TestGui.cpp b/tests/gui/TestGui.cpp index 54203c284..c736ea485 100644 --- a/tests/gui/TestGui.cpp +++ b/tests/gui/TestGui.cpp @@ -492,6 +492,7 @@ void TestGui::testAddEntry() // Add entry "something 5" but click cancel button (does NOT add entry) QTest::mouseClick(entryNewWidget, Qt::LeftButton); QTest::keyClicks(titleEdit, "something 5"); + MessageBox::setNextAnswer(QMessageBox::Discard); QTest::mouseClick(editEntryWidgetButtonBox->button(QDialogButtonBox::Cancel), Qt::LeftButton); QApplication::processEvents();