summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIvan Donchevskii <ivan.donchevskii@qt.io>2019-01-22 14:16:30 +0100
committerIvan Donchevskii <ivan.donchevskii@qt.io>2019-01-24 08:36:05 +0000
commit2e19352177cb23d185d0515c32128406791c317e (patch)
tree05de82e3e34ed4b932b781ddb1b9c367a929e986
parent020d1aab0a7fa54ec3569cce17c2200f402dfea1 (diff)
downloadqt-creator-2e19352177cb23d185d0515c32128406791c317e.tar.gz
ClangFormat: Fix applying global settings
The actual apply() method was never called for the widget. Change-Id: Idff194a36591db437cbe5695377005ed5a0b25d4 Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>
-rw-r--r--src/plugins/clangformat/clangformatconfigwidget.cpp13
-rw-r--r--src/plugins/clangformat/clangformatconfigwidget.h6
-rw-r--r--src/plugins/clangformat/clangformatconstants.h4
-rw-r--r--src/plugins/clangformat/clangformatplugin.cpp5
-rw-r--r--src/plugins/clangformat/clangformatutils.cpp14
-rw-r--r--src/plugins/cpptools/cppcodestylesettingspage.cpp2
-rw-r--r--src/plugins/cpptools/cppcodestylesettingspage.h4
-rw-r--r--src/plugins/texteditor/codestyleeditor.cpp2
-rw-r--r--src/plugins/texteditor/codestyleeditor.h4
-rw-r--r--src/plugins/texteditor/icodestylepreferencesfactory.cpp4
-rw-r--r--src/plugins/texteditor/icodestylepreferencesfactory.h16
11 files changed, 47 insertions, 27 deletions
diff --git a/src/plugins/clangformat/clangformatconfigwidget.cpp b/src/plugins/clangformat/clangformatconfigwidget.cpp
index 10125a5710..349f92905d 100644
--- a/src/plugins/clangformat/clangformatconfigwidget.cpp
+++ b/src/plugins/clangformat/clangformatconfigwidget.cpp
@@ -117,7 +117,7 @@ static QByteArray tableToYAML(QTableWidget *table)
ClangFormatConfigWidget::ClangFormatConfigWidget(ProjectExplorer::Project *project,
QWidget *parent)
- : QWidget(parent)
+ : CodeStyleEditorWidget(parent)
, m_project(project)
, m_ui(std::make_unique<Ui::ClangFormatConfigWidget>())
{
@@ -136,7 +136,8 @@ void ClangFormatConfigWidget::initialize()
if (lastItem->spacerItem())
m_ui->verticalLayout->removeItem(lastItem);
- if (m_project && !m_project->projectDirectory().appendPath(SETTINGS_FILE_NAME).exists()) {
+ if (m_project
+ && !m_project->projectDirectory().appendPath(Constants::SETTINGS_FILE_NAME).exists()) {
m_ui->projectHasClangFormat->setText(tr("No .clang-format file for the project."));
m_ui->clangFormatOptionsTable->hide();
m_ui->applyButton->hide();
@@ -158,7 +159,9 @@ void ClangFormatConfigWidget::initialize()
} else {
const Project *currentProject = SessionManager::startupProject();
if (!currentProject
- || !currentProject->projectDirectory().appendPath(SETTINGS_FILE_NAME).exists()) {
+ || !currentProject->projectDirectory()
+ .appendPath(Constants::SETTINGS_FILE_NAME)
+ .exists()) {
m_ui->projectHasClangFormat->hide();
} else {
m_ui->projectHasClangFormat->setText(
@@ -189,9 +192,9 @@ void ClangFormatConfigWidget::apply()
const QByteArray text = tableToYAML(m_ui->clangFormatOptionsTable);
QString filePath;
if (m_project)
- filePath = m_project->projectDirectory().appendPath(SETTINGS_FILE_NAME).toString();
+ filePath = m_project->projectDirectory().appendPath(Constants::SETTINGS_FILE_NAME).toString();
else
- filePath = Core::ICore::userResourcePath() + "/" + SETTINGS_FILE_NAME;
+ filePath = Core::ICore::userResourcePath() + "/" + Constants::SETTINGS_FILE_NAME;
QFile file(filePath);
if (!file.open(QFile::WriteOnly))
return;
diff --git a/src/plugins/clangformat/clangformatconfigwidget.h b/src/plugins/clangformat/clangformatconfigwidget.h
index 951e0cc408..5db16e3c96 100644
--- a/src/plugins/clangformat/clangformatconfigwidget.h
+++ b/src/plugins/clangformat/clangformatconfigwidget.h
@@ -25,7 +25,7 @@
#pragma once
-#include <QWidget>
+#include <texteditor/icodestylepreferencesfactory.h>
#include <memory>
@@ -37,7 +37,7 @@ namespace Ui {
class ClangFormatConfigWidget;
}
-class ClangFormatConfigWidget : public QWidget
+class ClangFormatConfigWidget : public TextEditor::CodeStyleEditorWidget
{
Q_OBJECT
@@ -45,7 +45,7 @@ public:
explicit ClangFormatConfigWidget(ProjectExplorer::Project *project = nullptr,
QWidget *parent = nullptr);
~ClangFormatConfigWidget() override;
- void apply();
+ void apply() override;
private:
void initialize();
diff --git a/src/plugins/clangformat/clangformatconstants.h b/src/plugins/clangformat/clangformatconstants.h
index 7b616f74f6..f2ff6a470e 100644
--- a/src/plugins/clangformat/clangformatconstants.h
+++ b/src/plugins/clangformat/clangformatconstants.h
@@ -26,7 +26,9 @@
#pragma once
namespace ClangFormat {
+namespace Constants {
static const char SETTINGS_FILE_NAME[] = ".clang-format";
static const char SETTINGS_FILE_ALT_NAME[] = "_clang-format";
static const char SAMPLE_FILE_NAME[] = "test.cpp";
-}
+} // namespace Constants
+} // namespace ClangFormat
diff --git a/src/plugins/clangformat/clangformatplugin.cpp b/src/plugins/clangformat/clangformatplugin.cpp
index 2d848d9501..d1251c75f2 100644
--- a/src/plugins/clangformat/clangformatplugin.cpp
+++ b/src/plugins/clangformat/clangformatplugin.cpp
@@ -46,6 +46,7 @@
#include <projectexplorer/session.h>
#include <projectexplorer/target.h>
+#include <texteditor/icodestylepreferences.h>
#include <texteditor/texteditorsettings.h>
#include <clang/Format/Format.h>
@@ -71,8 +72,8 @@ ClangFormatPlugin::~ClangFormatPlugin() = default;
class ClangFormatStyleFactory : public CppTools::CppCodeStylePreferencesFactory
{
public:
- QWidget *createCodeStyleEditor(TextEditor::ICodeStylePreferences *,
- QWidget *parent = nullptr) override
+ TextEditor::CodeStyleEditorWidget *createCodeStyleEditor(
+ TextEditor::ICodeStylePreferences *preferences, QWidget *parent = nullptr) override
{
if (!parent)
return new ClangFormatConfigWidget;
diff --git a/src/plugins/clangformat/clangformatutils.cpp b/src/plugins/clangformat/clangformatutils.cpp
index 76af9956c0..6b151020d6 100644
--- a/src/plugins/clangformat/clangformatutils.cpp
+++ b/src/plugins/clangformat/clangformatutils.cpp
@@ -106,9 +106,11 @@ static Utils::FileName globalPath()
return Utils::FileName::fromString(Core::ICore::userResourcePath());
}
-static bool configForFileExists(Utils::FileName fileName) {
+static bool configForFileExists(Utils::FileName fileName)
+{
QDir projectDir(fileName.parentDir().toString());
- while (!projectDir.exists(SETTINGS_FILE_NAME) && !projectDir.exists(SETTINGS_FILE_ALT_NAME)) {
+ while (!projectDir.exists(Constants::SETTINGS_FILE_NAME)
+ && !projectDir.exists(Constants::SETTINGS_FILE_ALT_NAME)) {
if (!projectDir.cdUp())
return false;
}
@@ -137,7 +139,7 @@ static clang::format::FormatStyle constructStyle(bool isGlobal)
void createStyleFileIfNeeded(bool isGlobal)
{
Utils::FileName path = isGlobal ? globalPath() : projectPath();
- const QString configFile = path.appendPath(SETTINGS_FILE_NAME).toString();
+ const QString configFile = path.appendPath(Constants::SETTINGS_FILE_NAME).toString();
if (QFile::exists(configFile))
return;
@@ -159,7 +161,7 @@ clang::format::FormatStyle styleForFile(Utils::FileName fileName)
fileName = globalPath();
isGlobal = true;
}
- fileName.appendPath(SAMPLE_FILE_NAME);
+ fileName.appendPath(Constants::SAMPLE_FILE_NAME);
createStyleFileIfNeeded(isGlobal);
}
@@ -178,12 +180,12 @@ clang::format::FormatStyle styleForFile(Utils::FileName fileName)
clang::format::FormatStyle currentProjectStyle()
{
- return styleForFile(projectPath().appendPath(SAMPLE_FILE_NAME));
+ return styleForFile(projectPath().appendPath(Constants::SAMPLE_FILE_NAME));
}
clang::format::FormatStyle currentGlobalStyle()
{
- return styleForFile(globalPath().appendPath(SAMPLE_FILE_NAME));
+ return styleForFile(globalPath().appendPath(Constants::SAMPLE_FILE_NAME));
}
}
diff --git a/src/plugins/cpptools/cppcodestylesettingspage.cpp b/src/plugins/cpptools/cppcodestylesettingspage.cpp
index f803516358..39517e6e35 100644
--- a/src/plugins/cpptools/cppcodestylesettingspage.cpp
+++ b/src/plugins/cpptools/cppcodestylesettingspage.cpp
@@ -556,6 +556,8 @@ void CppCodeStyleSettingsPage::apply()
originalCppCodeStylePreferences->setCurrentDelegate(m_pageCppCodeStylePreferences->currentDelegate());
originalCppCodeStylePreferences->toSettings(QLatin1String(CppTools::Constants::CPP_SETTINGS_ID), s);
}
+
+ m_widget->apply();
}
}
diff --git a/src/plugins/cpptools/cppcodestylesettingspage.h b/src/plugins/cpptools/cppcodestylesettingspage.h
index b8f82fc302..780a650a9e 100644
--- a/src/plugins/cpptools/cppcodestylesettingspage.h
+++ b/src/plugins/cpptools/cppcodestylesettingspage.h
@@ -30,6 +30,7 @@
#include "cppcodeformatter.h"
#include <coreplugin/dialogs/ioptionspage.h>
+#include <texteditor/icodestylepreferencesfactory.h>
#include <QWidget>
#include <QPointer>
@@ -37,7 +38,6 @@
namespace TextEditor {
class FontSettings;
class TabSettings;
- class ICodeStylePreferences;
class SnippetEditorWidget;
class CodeStyleEditor;
}
@@ -91,7 +91,7 @@ public:
private:
CppCodeStylePreferences *m_pageCppCodeStylePreferences = nullptr;
- QPointer<QWidget> m_widget;
+ QPointer<TextEditor::CodeStyleEditorWidget> m_widget;
};
} // namespace Internal
diff --git a/src/plugins/texteditor/codestyleeditor.cpp b/src/plugins/texteditor/codestyleeditor.cpp
index edfc40d12b..8dc50286f8 100644
--- a/src/plugins/texteditor/codestyleeditor.cpp
+++ b/src/plugins/texteditor/codestyleeditor.cpp
@@ -43,7 +43,7 @@ using namespace TextEditor;
CodeStyleEditor::CodeStyleEditor(ICodeStylePreferencesFactory *factory,
ICodeStylePreferences *codeStyle, QWidget *parent)
- : QWidget(parent),
+ : CodeStyleEditorWidget(parent),
m_factory(factory),
m_codeStyle(codeStyle)
{
diff --git a/src/plugins/texteditor/codestyleeditor.h b/src/plugins/texteditor/codestyleeditor.h
index edd04db171..613463c75b 100644
--- a/src/plugins/texteditor/codestyleeditor.h
+++ b/src/plugins/texteditor/codestyleeditor.h
@@ -27,7 +27,7 @@
#include "texteditor_global.h"
-#include <QWidget>
+#include "icodestylepreferencesfactory.h"
QT_BEGIN_NAMESPACE
class QVBoxLayout;
@@ -39,7 +39,7 @@ class ICodeStylePreferencesFactory;
class ICodeStylePreferences;
class SnippetEditorWidget;
-class TEXTEDITOR_EXPORT CodeStyleEditor : public QWidget
+class TEXTEDITOR_EXPORT CodeStyleEditor : public CodeStyleEditorWidget
{
Q_OBJECT
public:
diff --git a/src/plugins/texteditor/icodestylepreferencesfactory.cpp b/src/plugins/texteditor/icodestylepreferencesfactory.cpp
index 245d9b695c..adeaaa6b3b 100644
--- a/src/plugins/texteditor/icodestylepreferencesfactory.cpp
+++ b/src/plugins/texteditor/icodestylepreferencesfactory.cpp
@@ -34,8 +34,8 @@ ICodeStylePreferencesFactory::ICodeStylePreferencesFactory(QObject *parent) :
{
}
-QWidget *ICodeStylePreferencesFactory::createCodeStyleEditor(ICodeStylePreferences *codeStyle,
- QWidget *parent)
+CodeStyleEditorWidget *ICodeStylePreferencesFactory::createCodeStyleEditor(
+ ICodeStylePreferences *codeStyle, QWidget *parent)
{
return new CodeStyleEditor(this, codeStyle, parent);
}
diff --git a/src/plugins/texteditor/icodestylepreferencesfactory.h b/src/plugins/texteditor/icodestylepreferencesfactory.h
index 2acc0a5fa4..07c6e0f308 100644
--- a/src/plugins/texteditor/icodestylepreferencesfactory.h
+++ b/src/plugins/texteditor/icodestylepreferencesfactory.h
@@ -29,7 +29,7 @@
#include "indenter.h"
-#include <QObject>
+#include <QWidget>
namespace Core { class Id; }
namespace TextEditor {
@@ -37,14 +37,24 @@ namespace TextEditor {
class ICodeStylePreferences;
class SnippetProvider;
+class TEXTEDITOR_EXPORT CodeStyleEditorWidget : public QWidget
+{
+ Q_OBJECT
+public:
+ CodeStyleEditorWidget(QWidget *parent = nullptr)
+ : QWidget(parent)
+ {}
+ virtual void apply() {}
+};
+
class TEXTEDITOR_EXPORT ICodeStylePreferencesFactory : public QObject
{
Q_OBJECT
public:
explicit ICodeStylePreferencesFactory(QObject *parent = nullptr);
- virtual QWidget *createCodeStyleEditor(ICodeStylePreferences *codeStyle,
- QWidget *parent = nullptr);
+ virtual CodeStyleEditorWidget *createCodeStyleEditor(ICodeStylePreferences *codeStyle,
+ QWidget *parent = nullptr);
virtual Core::Id languageId() = 0;
virtual QString displayName() = 0;
virtual ICodeStylePreferences *createCodeStyle() const = 0;