From 0bcf6930d3691e7a805697b47bf11b88b51e5761 Mon Sep 17 00:00:00 2001
From: Tobias Hunger <tobias.hunger@digia.com>
Date: Fri, 28 Sep 2012 14:35:32 +0200
Subject: [PATCH] Add Close button to window asking what to do with changed
 documents

Add a close button to window asking what to do with documents that
were changed outside Creator. Finally a simple way to get rid of
open moc-files that trigger this window over and over again:-)

Task-number: QTCREATORBUG-7360
Change-Id: I7a373ed60d85d810caf6604bc7dae7bb7fa186a9
Reviewed-by: Daniel Teske <daniel.teske@digia.com>
Reviewed-by: Eike Ziller <eike.ziller@digia.com>
---
 src/libs/utils/reloadpromptutils.cpp       | 4 +++-
 src/libs/utils/reloadpromptutils.h         | 2 +-
 src/plugins/coreplugin/documentmanager.cpp | 3 +++
 3 files changed, 7 insertions(+), 2 deletions(-)

diff --git a/src/libs/utils/reloadpromptutils.cpp b/src/libs/utils/reloadpromptutils.cpp
index cbbe1dde5ab..794213c2899 100644
--- a/src/libs/utils/reloadpromptutils.cpp
+++ b/src/libs/utils/reloadpromptutils.cpp
@@ -59,7 +59,7 @@ QTCREATOR_UTILS_EXPORT Utils::ReloadPromptAnswer
     Utils::reloadPrompt(const QString &title, const QString &prompt, const QString &details, QWidget *parent)
 {
     QMessageBox msg(parent);
-    msg.setStandardButtons(QMessageBox::Yes|QMessageBox::YesToAll|QMessageBox::No|QMessageBox::NoToAll);
+    msg.setStandardButtons(QMessageBox::Yes|QMessageBox::YesToAll|QMessageBox::Close|QMessageBox::No|QMessageBox::NoToAll);
     msg.setDefaultButton(QMessageBox::YesToAll);
     msg.setWindowTitle(title);
     msg.setText(prompt);
@@ -72,6 +72,8 @@ QTCREATOR_UTILS_EXPORT Utils::ReloadPromptAnswer
         return ReloadAll;
     case QMessageBox::No:
         return ReloadSkipCurrent;
+    case QMessageBox::Close:
+        return CloseCurrent;
     default:
         break;
     }
diff --git a/src/libs/utils/reloadpromptutils.h b/src/libs/utils/reloadpromptutils.h
index b7cb73ff515..edfde0172c1 100644
--- a/src/libs/utils/reloadpromptutils.h
+++ b/src/libs/utils/reloadpromptutils.h
@@ -40,7 +40,7 @@ QT_END_NAMESPACE
 
 namespace Utils {
 
-enum ReloadPromptAnswer { ReloadCurrent, ReloadAll, ReloadSkipCurrent, ReloadNone };
+enum ReloadPromptAnswer { ReloadCurrent, ReloadAll, ReloadSkipCurrent, ReloadNone, CloseCurrent };
 
 QTCREATOR_UTILS_EXPORT ReloadPromptAnswer reloadPrompt(const QString &fileName, bool modified, QWidget *parent);
 QTCREATOR_UTILS_EXPORT ReloadPromptAnswer reloadPrompt(const QString &title, const QString &prompt, const QString &details, QWidget *parent);
diff --git a/src/plugins/coreplugin/documentmanager.cpp b/src/plugins/coreplugin/documentmanager.cpp
index a6eae6c95d7..732ceb4956a 100644
--- a/src/plugins/coreplugin/documentmanager.cpp
+++ b/src/plugins/coreplugin/documentmanager.cpp
@@ -1034,6 +1034,9 @@ void DocumentManager::checkForReload()
                     case Utils::ReloadNone:
                         success = document->reload(&errorString, IDocument::FlagIgnore, IDocument::TypeContents);
                         break;
+                    case Utils::CloseCurrent:
+                        editorsToClose << EditorManager::instance()->editorsForDocument(document);
+                        break;
                     }
                 }
             // IDocument wants us to ask, and it's the TypeRemoved case
-- 
GitLab