aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEike Ziller <eike.ziller@qt.io>2022-05-04 18:12:55 +0200
committerEike Ziller <eike.ziller@qt.io>2022-05-10 13:16:22 +0000
commit42e072f15968e354c981c7da499c230634189bf5 (patch)
tree2fcba8fcaf007755b3c8c6ab756778def662f690
parentb5b9b7e32c26245ad5f6d41a31be036f30088ea3 (diff)
Move MinimizableInfoBars from CppEditorDocument to IDocument
Similar to the InfoBar. The only thing that an editor implementation needs to do is to set a settings group and the possible info bars in the document constructor. And later call document->minimizableInfoBars()->setInfoVisible(id, visible) to manage the state. Change-Id: I23afb3639b70b1bfccd424579da018280a7fe2cb Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
-rw-r--r--src/plugins/coreplugin/idocument.cpp9
-rw-r--r--src/plugins/coreplugin/idocument.h2
-rw-r--r--src/plugins/cppeditor/cppeditordocument.cpp31
-rw-r--r--src/plugins/cppeditor/cppeditordocument.h3
-rw-r--r--src/plugins/cppeditor/cppeditorwidget.cpp4
-rw-r--r--src/plugins/texteditor/texteditor.cpp7
6 files changed, 31 insertions, 25 deletions
diff --git a/src/plugins/coreplugin/idocument.cpp b/src/plugins/coreplugin/idocument.cpp
index 0ece562f4b..9dfe282a1f 100644
--- a/src/plugins/coreplugin/idocument.cpp
+++ b/src/plugins/coreplugin/idocument.cpp
@@ -27,6 +27,7 @@
#include <utils/fileutils.h>
#include <utils/infobar.h>
+#include <utils/minimizableinfobars.h>
#include <utils/optional.h>
#include <utils/qtcassert.h>
@@ -226,6 +227,7 @@ public:
QString uniqueDisplayName;
Utils::FilePath autoSavePath;
Utils::InfoBar *infoBar = nullptr;
+ MinimizableInfoBars *minimizableInfoBars = nullptr;
Id id;
optional<bool> fileIsReadOnly;
bool temporary = false;
@@ -678,6 +680,13 @@ Utils::InfoBar *IDocument::infoBar()
return d->infoBar;
}
+MinimizableInfoBars *IDocument::minimizableInfoBars()
+{
+ if (!d->minimizableInfoBars)
+ d->minimizableInfoBars = new Utils::MinimizableInfoBars(*infoBar());
+ return d->minimizableInfoBars;
+}
+
/*!
Sets the absolute \a filePath of the file that backs this document. The
default implementation sets the file name and sends the filePathChanged() and
diff --git a/src/plugins/coreplugin/idocument.h b/src/plugins/coreplugin/idocument.h
index 788e1b792b..16d94fa779 100644
--- a/src/plugins/coreplugin/idocument.h
+++ b/src/plugins/coreplugin/idocument.h
@@ -35,6 +35,7 @@
namespace Utils {
class FilePath;
class InfoBar;
+class MinimizableInfoBars;
} // namespace Utils
namespace Core {
@@ -133,6 +134,7 @@ public:
void setWriteWarning(bool has);
Utils::InfoBar *infoBar();
+ Utils::MinimizableInfoBars *minimizableInfoBars();
signals:
// For meta data changes: file name, modified state, ...
diff --git a/src/plugins/cppeditor/cppeditordocument.cpp b/src/plugins/cppeditor/cppeditordocument.cpp
index 4a1bbc35fb..edd776f537 100644
--- a/src/plugins/cppeditor/cppeditordocument.cpp
+++ b/src/plugins/cppeditor/cppeditordocument.cpp
@@ -50,6 +50,7 @@
#include <utils/executeondestruction.h>
#include <utils/infobar.h>
#include <utils/mimeutils.h>
+#include <utils/minimizableinfobars.h>
#include <utils/qtcassert.h>
#include <utils/runextensions.h>
@@ -106,7 +107,6 @@ private:
};
CppEditorDocument::CppEditorDocument()
- : m_minimizableInfoBars(*infoBar())
{
setId(CppEditor::Constants::CPPEDITOR_ID);
setSyntaxHighlighter(new CppHighlighter);
@@ -130,8 +130,8 @@ CppEditorDocument::CppEditorDocument()
connect(&m_parseContextModel, &ParseContextModel::preferredParseContextChanged,
this, &CppEditorDocument::reparseWithPreferredParseContext);
- m_minimizableInfoBars.setSettingsGroup(Constants::CPPEDITOR_SETTINGSGROUP);
- m_minimizableInfoBars.setPossibleInfoBarEntries(
+ minimizableInfoBars()->setSettingsGroup(Constants::CPPEDITOR_SETTINGSGROUP);
+ minimizableInfoBars()->setPossibleInfoBarEntries(
{{NO_PROJECT_CONFIGURATION,
tr("<b>Warning</b>: This file is not part of any project. "
"The code model might have issues parsing this file properly.")}});
@@ -413,25 +413,20 @@ QFuture<CursorInfo> CppEditorDocument::cursorInfo(const CursorInfoParams &params
return processor()->cursorInfo(params);
}
-const Utils::MinimizableInfoBars &CppEditorDocument::minimizableInfoBars() const
-{
- return m_minimizableInfoBars;
-}
-
BaseEditorDocumentProcessor *CppEditorDocument::processor()
{
if (!m_processor) {
m_processor.reset(mm()->createEditorDocumentProcessor(this));
- connect(m_processor.data(), &BaseEditorDocumentProcessor::projectPartInfoUpdated,
- [this] (const ProjectPartInfo &info)
- {
- const bool hasProjectPart = !(info.hints & ProjectPartInfo::IsFallbackMatch);
- m_minimizableInfoBars.setInfoVisible(NO_PROJECT_CONFIGURATION, !hasProjectPart);
- m_parseContextModel.update(info);
- const bool isAmbiguous = info.hints & ProjectPartInfo::IsAmbiguousMatch;
- const bool isProjectFile = info.hints & ProjectPartInfo::IsFromProjectMatch;
- showHideInfoBarAboutMultipleParseContexts(isAmbiguous && isProjectFile);
- });
+ connect(m_processor.data(),
+ &BaseEditorDocumentProcessor::projectPartInfoUpdated,
+ [this](const ProjectPartInfo &info) {
+ const bool hasProjectPart = !(info.hints & ProjectPartInfo::IsFallbackMatch);
+ minimizableInfoBars()->setInfoVisible(NO_PROJECT_CONFIGURATION, !hasProjectPart);
+ m_parseContextModel.update(info);
+ const bool isAmbiguous = info.hints & ProjectPartInfo::IsAmbiguousMatch;
+ const bool isProjectFile = info.hints & ProjectPartInfo::IsFromProjectMatch;
+ showHideInfoBarAboutMultipleParseContexts(isAmbiguous && isProjectFile);
+ });
connect(m_processor.data(), &BaseEditorDocumentProcessor::codeWarningsUpdated,
[this] (unsigned revision,
const QList<QTextEdit::ExtraSelection> selections,
diff --git a/src/plugins/cppeditor/cppeditordocument.h b/src/plugins/cppeditor/cppeditordocument.h
index 384f57db86..471ba99c9b 100644
--- a/src/plugins/cppeditor/cppeditordocument.h
+++ b/src/plugins/cppeditor/cppeditordocument.h
@@ -33,7 +33,6 @@
#include "editordocumenthandle.h"
#include <texteditor/textdocument.h>
-#include <utils/minimizableinfobars.h>
#include <QMutex>
#include <QTimer>
@@ -65,7 +64,6 @@ public:
void scheduleProcessDocument();
- const Utils::MinimizableInfoBars &minimizableInfoBars() const;
ParseContextModel &parseContextModel();
QFuture<CursorInfo> cursorInfo(const CursorInfoParams &params);
@@ -135,7 +133,6 @@ private:
// (Un)Registration in CppModelManager
QScopedPointer<CppEditorDocumentHandle> m_editorDocumentHandle;
- Utils::MinimizableInfoBars m_minimizableInfoBars;
ParseContextModel m_parseContextModel;
};
diff --git a/src/plugins/cppeditor/cppeditorwidget.cpp b/src/plugins/cppeditor/cppeditorwidget.cpp
index 9a73d1f2e8..7c09724eee 100644
--- a/src/plugins/cppeditor/cppeditorwidget.cpp
+++ b/src/plugins/cppeditor/cppeditorwidget.cpp
@@ -552,10 +552,6 @@ void CppEditorWidget::finalizeInitialization()
insertExtraToolBarWidget(TextEditorWidget::Left, d->m_preprocessorButton);
}
- // Toolbar: Actions to show minimized info bars
- d->m_cppEditorDocument->minimizableInfoBars().createShowInfoBarActions(
- [this](QWidget *w) { return this->insertExtraToolBarWidget(TextEditorWidget::Left, w); });
-
d->m_outlineTimer.setInterval(5000);
d->m_outlineTimer.setSingleShot(true);
connect(&d->m_outlineTimer, &QTimer::timeout, this, [this] {
diff --git a/src/plugins/texteditor/texteditor.cpp b/src/plugins/texteditor/texteditor.cpp
index 28dca256e6..333f5f37aa 100644
--- a/src/plugins/texteditor/texteditor.cpp
+++ b/src/plugins/texteditor/texteditor.cpp
@@ -80,6 +80,7 @@
#include <utils/hostosinfo.h>
#include <utils/infobar.h>
#include <utils/mimeutils.h>
+#include <utils/minimizableinfobars.h>
#include <utils/multitextcursor.h>
#include <utils/qtcassert.h>
#include <utils/styledbar.h>
@@ -8534,6 +8535,12 @@ BaseTextEditor *TextEditorFactoryPrivate::createEditorHelper(const TextDocumentP
if (m_useGenericHighlighter)
textEditorWidget->setupGenericHighlighter();
textEditorWidget->finalizeInitialization();
+
+ // Toolbar: Actions to show minimized info bars
+ document->minimizableInfoBars()->createShowInfoBarActions([textEditorWidget](QWidget *w) {
+ return textEditorWidget->insertExtraToolBarWidget(TextEditorWidget::Left, w);
+ });
+
editor->finalizeInitialization();
return editor;
}