ClangFormat: Do not reinitialize the configuration and preview

Initialize them only once and only show/hide widgets later on.

Change-Id: I5ebad504709e34aeb6ce5bf1ead7d8e2ee0b2056
Reviewed-by: Marco Bubke <marco.bubke@qt.io>
This commit is contained in:
Ivan Donchevskii
2019-04-26 10:49:48 +02:00
parent 7167656a8d
commit c2ab89cc12
2 changed files with 26 additions and 24 deletions

View File

@@ -89,11 +89,12 @@ ClangFormatConfigWidget::ClangFormatConfigWidget(ProjectExplorer::Project *proje
}
connect(m_ui->overrideDefault, &QCheckBox::toggled, this, [this](bool checked) {
if (checked)
createStyleFileIfNeeded(!m_project);
initialize();
showOrHideWidgets();
});
initialize();
showOrHideWidgets();
fillTable();
updatePreview();
connectChecks();
}
@@ -110,6 +111,24 @@ void ClangFormatConfigWidget::initChecksAndPreview()
m_preview = new TextEditor::SnippetEditorWidget(this);
m_ui->horizontalLayout_2->addWidget(m_preview);
TextEditor::DisplaySettings displaySettings = m_preview->displaySettings();
displaySettings.m_visualizeWhitespace = true;
m_preview->setDisplaySettings(displaySettings);
m_preview->setPlainText(QLatin1String(CppTools::Constants::DEFAULT_CODE_STYLE_SNIPPETS[0]));
m_preview->textDocument()->setIndenter(new ClangFormatIndenter(m_preview->document()));
m_preview->textDocument()->setFontSettings(TextEditor::TextEditorSettings::fontSettings());
m_preview->textDocument()->setSyntaxHighlighter(new CppEditor::CppHighlighter);
Utils::FileName fileName;
if (m_project) {
connect(m_ui->applyButton, &QPushButton::clicked, this, &ClangFormatConfigWidget::apply);
fileName = m_project->projectFilePath().appendPath("snippet.cpp");
} else {
fileName = Utils::FileName::fromString(Core::ICore::userResourcePath())
.appendPath("snippet.cpp");
}
m_preview->textDocument()->indenter()->setFileName(fileName);
}
void ClangFormatConfigWidget::connectChecks()
@@ -175,19 +194,10 @@ static bool projectConfigExists()
.exists();
}
void ClangFormatConfigWidget::initialize()
void ClangFormatConfigWidget::showOrHideWidgets()
{
m_ui->projectHasClangFormat->hide();
m_preview->setPlainText(QLatin1String(CppTools::Constants::DEFAULT_CODE_STYLE_SNIPPETS[0]));
m_preview->textDocument()->setIndenter(new ClangFormatIndenter(m_preview->document()));
m_preview->textDocument()->setFontSettings(TextEditor::TextEditorSettings::fontSettings());
m_preview->textDocument()->setSyntaxHighlighter(new CppEditor::CppHighlighter);
TextEditor::DisplaySettings displaySettings = m_preview->displaySettings();
displaySettings.m_visualizeWhitespace = true;
m_preview->setDisplaySettings(displaySettings);
QLayoutItem *lastItem = m_ui->verticalLayout->itemAt(m_ui->verticalLayout->count() - 1);
if (lastItem->spacerItem())
m_ui->verticalLayout->removeItem(lastItem);
@@ -200,14 +210,12 @@ void ClangFormatConfigWidget::initialize()
return;
}
createStyleFileIfNeeded(!m_project);
m_checksScrollArea->show();
m_preview->show();
Utils::FileName fileName;
if (m_project) {
m_ui->projectHasClangFormat->hide();
connect(m_ui->applyButton, &QPushButton::clicked, this, &ClangFormatConfigWidget::apply);
fileName = m_project->projectFilePath().appendPath("snippet.cpp");
} else {
const Project *currentProject = SessionManager::startupProject();
if (!currentProject || !projectConfigExists()) {
@@ -218,13 +226,7 @@ void ClangFormatConfigWidget::initialize()
tr("Current project has its own overridden .clang-format file "
"and can be configured in Projects > Code Style > C++."));
}
fileName = Utils::FileName::fromString(Core::ICore::userResourcePath())
.appendPath("snippet.cpp");
}
m_preview->textDocument()->indenter()->setFileName(fileName);
fillTable();
updatePreview();
}
void ClangFormatConfigWidget::updatePreview()