aboutsummaryrefslogtreecommitdiff
path: root/src-qt5/desktop-utils/lumina-textedit/MainUI.cpp
diff options
context:
space:
mode:
authorKjell Tore Ullavik <kt@mathblocks.net>2017-12-06 10:06:15 +0100
committerKjell Tore Ullavik <kt@mathblocks.net>2017-12-06 10:06:15 +0100
commit079daaa6933b54117a7963ea5d2cb8daf00caf90 (patch)
tree436ebb8840014df58c68db5016522181d647278b /src-qt5/desktop-utils/lumina-textedit/MainUI.cpp
parentAdd 'Show Toolbar' to textedit menu. (diff)
downloadlumina-079daaa6933b54117a7963ea5d2cb8daf00caf90.tar.gz
lumina-079daaa6933b54117a7963ea5d2cb8daf00caf90.tar.bz2
lumina-079daaa6933b54117a7963ea5d2cb8daf00caf90.zip
Don't close editor when user cancels save dialog.
Diffstat (limited to 'src-qt5/desktop-utils/lumina-textedit/MainUI.cpp')
-rw-r--r--src-qt5/desktop-utils/lumina-textedit/MainUI.cpp63
1 files changed, 48 insertions, 15 deletions
diff --git a/src-qt5/desktop-utils/lumina-textedit/MainUI.cpp b/src-qt5/desktop-utils/lumina-textedit/MainUI.cpp
index 33f2d851..e584b8b1 100644
--- a/src-qt5/desktop-utils/lumina-textedit/MainUI.cpp
+++ b/src-qt5/desktop-utils/lumina-textedit/MainUI.cpp
@@ -189,6 +189,18 @@ QString MainUI::currentFileDir(){
return dir;
}
+QStringList MainUI::unsavedFiles(){
+ QStringList unsaved;
+ for(int i=0; i<tabWidget->count(); i++){
+ PlainTextEditor *tmp = static_cast<PlainTextEditor*>(tabWidget->widget(i));
+ if(tmp->hasChange()){
+ unsaved << tmp->currentFile();
+ }
+ }
+ return unsaved;
+}
+
+
// =================
// PRIVATE SLOTS
//=================
@@ -240,6 +252,7 @@ void MainUI::CloseFile(){
}
void MainUI::SaveFile(){
+ qDebug() << "SaveFile";
PlainTextEditor *cur = currentEditor();
if(cur==0){ return; }
cur->SaveFile();
@@ -494,26 +507,46 @@ PlainTextEditor *cur = currentEditor();
}
}
+
//=============
// PROTECTED
//=============
void MainUI::closeEvent(QCloseEvent *ev){
//See if any of the open editors have unsaved changes first
- QStringList unsaved;
- for(int i=0; i<tabWidget->count(); i++){
- PlainTextEditor *tmp = static_cast<PlainTextEditor*>(tabWidget->widget(i));
- if(tmp->hasChange()){
- unsaved << tmp->currentFile();
- }
+ QStringList unsaved = unsavedFiles();
+ if(unsaved.isEmpty()){
+ QMainWindow::closeEvent(ev);
+ return;
}
- if(unsaved.isEmpty()){ QMainWindow::closeEvent(ev); return; }
- bool savenow = false;
- if(!savenow && !ui->actionShow_Popups->isChecked()){ savenow = true; }
- if(!savenow){
- QMessageBox::StandardButton but = QMessageBox::question(this, tr("Save Changes before closing?"), QString(tr("There are unsaved changes.\nDo you want save them before you close the editor?\n\n%1")).arg(unsaved.join("\n")), QMessageBox::Yes | QMessageBox::No | QMessageBox::Cancel, QMessageBox::No);
- savenow = (but == QMessageBox::Yes);
- if(but == QMessageBox::Cancel){ ev->ignore(); return; }
- }
- if(savenow){ SaveFile(); }
+
+ //If popups are disabled, give the user a chance by opening
+ //the save dialog automatically, then just close.
+ if(!ui->actionShow_Popups->isChecked()){
+ SaveFile();
QMainWindow::closeEvent(ev);
+ return;
+ }
+
+ //Otherwise, ask the user what to do.
+ QMessageBox::StandardButton but = QMessageBox::question(
+ this,
+ tr("Save Changes before closing?"),
+ QString(tr("There are unsaved changes.\nDo you want save them before you close the editor?\n\n%1")).arg(unsaved.join("\n")),
+ QMessageBox::Yes | QMessageBox::No | QMessageBox::Cancel, QMessageBox::No);
+
+ if(but == QMessageBox::Cancel){
+ ev->ignore();
+ return;
+ }
+ else if(but == QMessageBox::Yes){
+ SaveFile();
+ //If there are still unsaved files, the user presumably
+ //cancelled the save dialog and we don't want to close.
+ unsaved = unsavedFiles();
+ if (!unsaved.isEmpty()) {
+ ev->ignore();
+ return;
+ }
+ }
+ QMainWindow::closeEvent(ev);
}
bgstack15