add unsaved changes dialog to mainwindow close
This commit is contained in:
parent
f89804dd16
commit
3e39ebccdf
2 changed files with 18 additions and 0 deletions
|
@ -177,6 +177,7 @@ private:
|
||||||
DraggablePixmapItem *selectedHealspot;
|
DraggablePixmapItem *selectedHealspot;
|
||||||
|
|
||||||
bool isProgrammaticEventTabChange;
|
bool isProgrammaticEventTabChange;
|
||||||
|
bool projectHasUnsavedChanges;
|
||||||
|
|
||||||
MapSortOrder mapSortOrder;
|
MapSortOrder mapSortOrder;
|
||||||
|
|
||||||
|
|
|
@ -1001,6 +1001,7 @@ void MainWindow::on_mapList_activated(const QModelIndex &index)
|
||||||
}
|
}
|
||||||
|
|
||||||
void MainWindow::drawMapListIcons(QAbstractItemModel *model) {
|
void MainWindow::drawMapListIcons(QAbstractItemModel *model) {
|
||||||
|
projectHasUnsavedChanges = false;
|
||||||
QList<QModelIndex> list;
|
QList<QModelIndex> list;
|
||||||
list.append(QModelIndex());
|
list.append(QModelIndex());
|
||||||
while (list.length()) {
|
while (list.length()) {
|
||||||
|
@ -1018,6 +1019,7 @@ void MainWindow::drawMapListIcons(QAbstractItemModel *model) {
|
||||||
map->setIcon(*mapIcon);
|
map->setIcon(*mapIcon);
|
||||||
if (editor->project->map_cache->value(map_name)->hasUnsavedChanges()) {
|
if (editor->project->map_cache->value(map_name)->hasUnsavedChanges()) {
|
||||||
map->setIcon(*mapEditedIcon);
|
map->setIcon(*mapEditedIcon);
|
||||||
|
projectHasUnsavedChanges = true;
|
||||||
}
|
}
|
||||||
if (editor->map->name == map_name) {
|
if (editor->map->name == map_name) {
|
||||||
map->setIcon(*mapOpenedIcon);
|
map->setIcon(*mapOpenedIcon);
|
||||||
|
@ -2170,6 +2172,21 @@ void MainWindow::on_actionRegion_Map_Editor_triggered() {
|
||||||
}
|
}
|
||||||
|
|
||||||
void MainWindow::closeEvent(QCloseEvent *event) {
|
void MainWindow::closeEvent(QCloseEvent *event) {
|
||||||
|
if (projectHasUnsavedChanges || editor->map->hasUnsavedChanges()) {
|
||||||
|
QMessageBox::StandardButton result = QMessageBox::question(
|
||||||
|
this, "porymap", "The project has been modified, save changes?",
|
||||||
|
QMessageBox::No | QMessageBox::Yes | QMessageBox::Cancel, QMessageBox::Yes);
|
||||||
|
|
||||||
|
if (result == QMessageBox::Yes) {
|
||||||
|
editor->saveProject();
|
||||||
|
} else if (result == QMessageBox::No) {
|
||||||
|
logWarn("Closing porymap with unsaved changes.");
|
||||||
|
} else if (result == QMessageBox::Cancel) {
|
||||||
|
event->ignore();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
porymapConfig.setGeometry(
|
porymapConfig.setGeometry(
|
||||||
this->saveGeometry(),
|
this->saveGeometry(),
|
||||||
this->saveState(),
|
this->saveState(),
|
||||||
|
|
Loading…
Reference in a new issue