From 61325aae0da74e59f50c515ea33de4ce2bcc30ed Mon Sep 17 00:00:00 2001 From: Leandro Melo <leandro.melo@nokia.com> Date: Tue, 31 May 2011 16:36:58 +0200 Subject: [PATCH] Editors: Make snippets and code style honor font settings MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Task-number: QTCREATORBUG-5007 Change-Id: Ied78ef17ea7a25d22c37d36fd4eb7257c6c9f4c0 Reviewed-on: http://codereview.qt.nokia.com/293 Reviewed-by: Thorbjørn Lindeijer <thorbjorn.lindeijer@nokia.com> --- .../cpptools/cppcodestylesettingspage.cpp | 32 +++++++++++-------- .../cpptools/cppcodestylesettingspage.h | 2 +- .../snippets/snippetssettingspage.cpp | 23 +++++++++++++ 3 files changed, 42 insertions(+), 15 deletions(-) diff --git a/src/plugins/cpptools/cppcodestylesettingspage.cpp b/src/plugins/cpptools/cppcodestylesettingspage.cpp index 68787669400..09e365251e3 100644 --- a/src/plugins/cpptools/cppcodestylesettingspage.cpp +++ b/src/plugins/cpptools/cppcodestylesettingspage.cpp @@ -191,19 +191,10 @@ CppCodeStylePreferencesWidget::CppCodeStylePreferencesWidget(QWidget *parent) m_previews[i]->setPlainText(defaultCodeStyleSnippets[i]); } - const QList<ISnippetProvider *> &providers = - ExtensionSystem::PluginManager::instance()->getObjects<ISnippetProvider>(); - foreach (ISnippetProvider *provider, providers) { - if (provider->groupId() == QLatin1String(CppEditor::Constants::CPP_SNIPPETS_GROUP_ID)) { - foreach (TextEditor::SnippetEditorWidget *preview, m_previews) - provider->decorateEditor(preview); - break; - } - } TextEditor::TextEditorSettings *settings = TextEditorSettings::instance(); - setFontSettings(settings->fontSettings()); + decorateEditors(settings->fontSettings()); connect(settings, SIGNAL(fontSettingsChanged(TextEditor::FontSettings)), - this, SLOT(setFontSettings(TextEditor::FontSettings))); + this, SLOT(decorateEditors(TextEditor::FontSettings))); setVisualizeWhitespace(true); @@ -420,10 +411,23 @@ void CppCodeStylePreferencesWidget::updatePreview() } } -void CppCodeStylePreferencesWidget::setFontSettings(const TextEditor::FontSettings &fontSettings) +void CppCodeStylePreferencesWidget::decorateEditors(const TextEditor::FontSettings &fontSettings) { - foreach (TextEditor::SnippetEditorWidget *editor, m_previews) - editor->setFont(fontSettings.font()); + const ISnippetProvider *provider = 0; + const QList<ISnippetProvider *> &providers = + ExtensionSystem::PluginManager::instance()->getObjects<ISnippetProvider>(); + foreach (const ISnippetProvider *current, providers) { + if (current->groupId() == QLatin1String(CppEditor::Constants::CPP_SNIPPETS_GROUP_ID)) { + provider = current; + break; + } + } + + foreach (TextEditor::SnippetEditorWidget *editor, m_previews) { + editor->setFontSettings(fontSettings); + if (provider) + provider->decorateEditor(editor); + } } void CppCodeStylePreferencesWidget::setVisualizeWhitespace(bool on) diff --git a/src/plugins/cpptools/cppcodestylesettingspage.h b/src/plugins/cpptools/cppcodestylesettingspage.h index f599f8bcdd5..b332810946f 100644 --- a/src/plugins/cpptools/cppcodestylesettingspage.h +++ b/src/plugins/cpptools/cppcodestylesettingspage.h @@ -44,7 +44,7 @@ public: QString searchKeywords() const; private slots: - void setFontSettings(const TextEditor::FontSettings &fontSettings); + void decorateEditors(const TextEditor::FontSettings &fontSettings); void setVisualizeWhitespace(bool on); void slotCppCodeStyleSettingsChanged(); void slotSettingsChanged(); diff --git a/src/plugins/texteditor/snippets/snippetssettingspage.cpp b/src/plugins/texteditor/snippets/snippetssettingspage.cpp index 83ffeeff266..14edf58753a 100644 --- a/src/plugins/texteditor/snippets/snippetssettingspage.cpp +++ b/src/plugins/texteditor/snippets/snippetssettingspage.cpp @@ -40,6 +40,8 @@ #include "ui_snippetssettingspage.h" #include <coreplugin/icore.h> +#include <texteditor/texteditorsettings.h> +#include <texteditor/fontsettings.h> #include <extensionsystem/pluginmanager.h> #include <QtCore/QModelIndex> @@ -290,6 +292,7 @@ private slots: void selectMovedSnippet(const QModelIndex &, int, int, const QModelIndex &, int row); void setSnippetContent(); void updateCurrentSnippetDependent(const QModelIndex &modelIndex = QModelIndex()); + void decorateEditors(const TextEditor::FontSettings &fontSettings); private: SnippetEditorWidget *currentEditor() const; @@ -336,6 +339,7 @@ void SnippetsSettingsPagePrivate::configureUi(QWidget *w) foreach (ISnippetProvider *provider, providers) { m_ui.groupCombo->addItem(provider->displayName(), provider->groupId()); SnippetEditorWidget *snippetEditor = new SnippetEditorWidget(w); + snippetEditor->setFontSettings(TextEditorSettings::instance()->fontSettings()); provider->decorateEditor(snippetEditor); m_ui.snippetsEditorStack->insertWidget(m_ui.groupCombo->count() - 1, snippetEditor); connect(snippetEditor, SIGNAL(snippetContentChanged()), this, SLOT(setSnippetContent())); @@ -380,6 +384,9 @@ void SnippetsSettingsPagePrivate::configureUi(QWidget *w) connect(m_ui.revertButton, SIGNAL(clicked()), this, SLOT(revertBuiltInSnippet())); connect(m_ui.snippetsTable->selectionModel(), SIGNAL(currentChanged(QModelIndex,QModelIndex)), this, SLOT(updateCurrentSnippetDependent(QModelIndex))); + + connect(TextEditorSettings::instance(), SIGNAL(fontSettingsChanged(TextEditor::FontSettings)), + this, SLOT(decorateEditors(TextEditor::FontSettings))); } void SnippetsSettingsPagePrivate::apply() @@ -536,6 +543,22 @@ void SnippetsSettingsPagePrivate::setSnippetContent() } } +void SnippetsSettingsPagePrivate::decorateEditors(const TextEditor::FontSettings &fontSettings) +{ + const QList<ISnippetProvider *> &providers = + ExtensionSystem::PluginManager::instance()->getObjects<ISnippetProvider>(); + for (int i = 0; i < m_ui.groupCombo->count(); ++i) { + SnippetEditorWidget *snippetEditor = editorAt(i); + snippetEditor->setFontSettings(fontSettings); + const QString &id = m_ui.groupCombo->itemData(i).toString(); + // This list should be quite short... Re-iterating over it is ok. + foreach (const ISnippetProvider *provider, providers) { + if (provider->groupId() == id) + provider->decorateEditor(snippetEditor); + } + } +} + // SnippetsSettingsPage SnippetsSettingsPage::SnippetsSettingsPage(const QString &id, QObject *parent) : TextEditorOptionsPage(parent), -- GitLab