From db265b1fa9ac1ecc6bcbb4fa21ecc43cd98032cd Mon Sep 17 00:00:00 2001
From: Andre Hartmann <aha_1980@gmx.de>
Date: Sun, 8 Jul 2012 10:13:27 +0200
Subject: [PATCH] Find: Display "This change cannot be undone" only once.

Every click on Search Again displayed an additional warning message bar.

If the bar is closed with the cross button, it reappears on Search
Again.

This implementation extended InfoBar with a reuseable method
bool containsInfo(const QString &id).

Task-number: QTCREATORBUG-6873

Change-Id: I1de100d3526b861fc2de190e32f903795fed52c0
Reviewed-by: Eike Ziller <eike.ziller@nokia.com>
---
 src/plugins/coreplugin/infobar.cpp      | 10 ++++++++++
 src/plugins/coreplugin/infobar.h        |  1 +
 src/plugins/find/searchresultwidget.cpp |  2 +-
 3 files changed, 12 insertions(+), 1 deletion(-)

diff --git a/src/plugins/coreplugin/infobar.cpp b/src/plugins/coreplugin/infobar.cpp
index 6e3c78fdcb3..2db4f3eb2d5 100644
--- a/src/plugins/coreplugin/infobar.cpp
+++ b/src/plugins/coreplugin/infobar.cpp
@@ -91,6 +91,16 @@ void InfoBar::removeInfo(const QString &id)
         }
 }
 
+bool InfoBar::containsInfo(const QString &id) const
+{
+    QListIterator<InfoBarEntry> it(m_infoBarEntries);
+    while (it.hasNext())
+        if (it.next().id == id)
+            return true;
+
+    return false;
+}
+
 void InfoBar::clear()
 {
     if (!m_infoBarEntries.isEmpty()) {
diff --git a/src/plugins/coreplugin/infobar.h b/src/plugins/coreplugin/infobar.h
index 4bdd9243835..652bf3d4314 100644
--- a/src/plugins/coreplugin/infobar.h
+++ b/src/plugins/coreplugin/infobar.h
@@ -75,6 +75,7 @@ class CORE_EXPORT InfoBar : public QObject
 public:
     void addInfo(const InfoBarEntry &info);
     void removeInfo(const QString &id);
+    bool containsInfo(const QString &id) const;
     void clear();
 
 signals:
diff --git a/src/plugins/find/searchresultwidget.cpp b/src/plugins/find/searchresultwidget.cpp
index 918527364ba..2b3f32362b7 100644
--- a/src/plugins/find/searchresultwidget.cpp
+++ b/src/plugins/find/searchresultwidget.cpp
@@ -463,7 +463,7 @@ void SearchResultWidget::searchAgain()
 
 bool SearchResultWidget::showWarningMessage() const
 {
-    if (m_dontAskAgainGroup.isEmpty())
+    if (m_dontAskAgainGroup.isEmpty() || m_infoBar.containsInfo(QLatin1String(UNDO_WARNING_ID)))
         return false;
     // read settings
     QSettings *settings = Core::ICore::settings();
-- 
GitLab