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