X-Git-Url: https://sigrok.org/gitweb/?p=pulseview.git;a=blobdiff_plain;f=pv%2Fmainwindow.cpp;h=4aeecb260466c6a0885951f94a687dbe132058dc;hp=8aaa1635c737d376321b8ebcb9202572182cde98;hb=5ccfc97e20bbea19b9bc37905dd4cf63ee1f6303;hpb=f30eb549fe91dde6a56f69c24f2f8169039c12a2 diff --git a/pv/mainwindow.cpp b/pv/mainwindow.cpp index 8aaa1635..4aeecb26 100644 --- a/pv/mainwindow.cpp +++ b/pv/mainwindow.cpp @@ -477,8 +477,20 @@ std::shared_ptr MainWindow::get_tab_session(int index) const void MainWindow::closeEvent(QCloseEvent *event) { - save_ui_settings(); - event->accept(); + bool data_saved = true; + + for (auto entry : session_windows_) + if (!entry.first->data_saved()) + data_saved = false; + + if (!data_saved && (QMessageBox::question(this, tr("Confirmation"), + tr("There is unsaved data. Close anyway?"), + QMessageBox::Yes | QMessageBox::No) == QMessageBox::No)) { + event->ignore(); + } else { + save_ui_settings(); + event->accept(); + } } QMenu* MainWindow::createPopupMenu() @@ -681,11 +693,13 @@ void MainWindow::on_tab_changed(int index) void MainWindow::on_tab_close_requested(int index) { - // TODO Ask user if this is intended in case data is unsaved - shared_ptr session = get_tab_session(index); - if (session) + assert(session); + + if (session->data_saved() || (QMessageBox::question(this, tr("Confirmation"), + tr("This session contains unsaved data. Close it anyway?"), + QMessageBox::Yes | QMessageBox::No) == QMessageBox::Yes)) remove_session(session); }