From aa630932b165922a4c0637b1215e23eb22aecadc Mon Sep 17 00:00:00 2001 From: mae <qt-info@nokia.com> Date: Wed, 17 Jun 2009 19:12:19 +0200 Subject: [PATCH] make zoom-in/-out apply to all editors --- src/plugins/texteditor/basetexteditor.cpp | 25 ++++++++++++++++--- src/plugins/texteditor/basetexteditor.h | 5 ++++ src/plugins/texteditor/basetexteditor_p.h | 2 ++ src/plugins/texteditor/fontsettings.cpp | 6 ++--- src/plugins/texteditor/fontsettings.h | 3 ++- src/plugins/texteditor/fontsettingspage.cpp | 2 -- src/plugins/texteditor/texteditorsettings.cpp | 13 +++++++++- src/plugins/texteditor/texteditorsettings.h | 3 +++ 8 files changed, 49 insertions(+), 10 deletions(-) diff --git a/src/plugins/texteditor/basetexteditor.cpp b/src/plugins/texteditor/basetexteditor.cpp index 61cbbe76640..a86c65dd8da 100644 --- a/src/plugins/texteditor/basetexteditor.cpp +++ b/src/plugins/texteditor/basetexteditor.cpp @@ -45,7 +45,7 @@ #include <coreplugin/stylehelper.h> #include <extensionsystem/pluginmanager.h> #include <find/basetextfind.h> -#include <texteditor/fontsettings.h> + #include <utils/reloadpromptutils.h> #include <aggregation/aggregate.h> #endif @@ -3114,8 +3114,9 @@ void BaseTextEditor::zoomIn(int range) const int newSize = f.pointSize() + range; if (newSize <= 0) return; - f.setPointSize(newSize); - setFont(f); + emit requestFontSize(newSize); +// f.setPointSize(newSize); +// setFont(f); } void BaseTextEditor::zoomOut(int range) @@ -3837,6 +3838,24 @@ void BaseTextEditor::unCommentSelection() { } +void BaseTextEditor::showEvent(QShowEvent* e) +{ + if (!d->m_fontSettings.isEmpty()) { + setFontSettings(d->m_fontSettings); + d->m_fontSettings.clear(); + } + QPlainTextEdit::showEvent(e); +} + + +void BaseTextEditor::setFontSettingsIfVisible(const TextEditor::FontSettings &fs) +{ + if (!isVisible()) { + d->m_fontSettings = fs; + return; + } + setFontSettings(fs); +} void BaseTextEditor::setFontSettings(const TextEditor::FontSettings &fs) { const QTextCharFormat textFormat = fs.toTextCharFormat(QLatin1String(Constants::C_TEXT)); diff --git a/src/plugins/texteditor/basetexteditor.h b/src/plugins/texteditor/basetexteditor.h index fe307b82b1c..9dd92405791 100644 --- a/src/plugins/texteditor/basetexteditor.h +++ b/src/plugins/texteditor/basetexteditor.h @@ -408,6 +408,8 @@ protected: void wheelEvent(QWheelEvent *e); void changeEvent(QEvent *e); + void showEvent(QShowEvent *); + // reimplemented to support block selection QMimeData *createMimeDataFromSelection() const; bool canInsertFromMimeData(const QMimeData *source) const; @@ -483,6 +485,7 @@ public slots: virtual void format(); virtual void unCommentSelection(); virtual void setFontSettings(const TextEditor::FontSettings &); + void setFontSettingsIfVisible(const TextEditor::FontSettings &); virtual void setTabSettings(const TextEditor::TabSettings &); virtual void setDisplaySettings(const TextEditor::DisplaySettings &); virtual void setStorageSettings(const TextEditor::StorageSettings &); @@ -511,6 +514,7 @@ protected slots: virtual void slotUpdateBlockNotify(const QTextBlock &); signals: + void requestFontSize(int pointSize); void requestBlockUpdate(const QTextBlock &); void requestAutoCompletion(ITextEditable *editor, bool forced); void requestQuickFix(ITextEditable *editor); @@ -534,6 +538,7 @@ private: QTextBlock collapsedBlockAt(const QPoint &pos, QRect *box = 0) const; + // parentheses matcher private slots: void _q_matchParentheses(); diff --git a/src/plugins/texteditor/basetexteditor_p.h b/src/plugins/texteditor/basetexteditor_p.h index 2eef2d8b0a3..16322fde05a 100644 --- a/src/plugins/texteditor/basetexteditor_p.h +++ b/src/plugins/texteditor/basetexteditor_p.h @@ -31,6 +31,7 @@ #define BASETEXTEDITOR_P_H #include "basetexteditor.h" +#include <texteditor/fontsettings.h> #include <QtCore/QBasicTimer> #include <QtCore/QSharedData> @@ -174,6 +175,7 @@ public: QWidget *m_extraArea; DisplaySettings m_displaySettings; + TextEditor::FontSettings m_fontSettings; int extraAreaSelectionAnchorBlockNumber; int extraAreaToggleMarkBlockNumber; diff --git a/src/plugins/texteditor/fontsettings.cpp b/src/plugins/texteditor/fontsettings.cpp index 8386c885447..e8c2bcd1047 100644 --- a/src/plugins/texteditor/fontsettings.cpp +++ b/src/plugins/texteditor/fontsettings.cpp @@ -136,12 +136,11 @@ bool Format::equals(const Format &f) const } // -- FontSettings -FontSettings::FontSettings(const FormatDescriptions &fd) : +FontSettings::FontSettings() : m_family(defaultFixedFontFamily()), m_fontSize(DEFAULT_FONT_SIZE), m_antialias(DEFAULT_ANTIALIAS) { - Q_UNUSED(fd); } void FontSettings::clear() @@ -149,7 +148,8 @@ void FontSettings::clear() m_family = defaultFixedFontFamily(); m_fontSize = DEFAULT_FONT_SIZE; m_antialias = DEFAULT_ANTIALIAS; - qFill(m_formats.begin(), m_formats.end(), Format()); + m_formats.clear(); + //qFill(m_formats.begin(), m_formats.end(), Format()); } void FontSettings::toSettings(const QString &category, diff --git a/src/plugins/texteditor/fontsettings.h b/src/plugins/texteditor/fontsettings.h index 0011a374337..fb4d4c01038 100644 --- a/src/plugins/texteditor/fontsettings.h +++ b/src/plugins/texteditor/fontsettings.h @@ -88,8 +88,9 @@ class TEXTEDITOR_EXPORT FontSettings public: typedef QList<FormatDescription> FormatDescriptions; - FontSettings(const FormatDescriptions &fd); + FontSettings(); void clear(); + inline bool isEmpty() const { return m_formats.isEmpty(); } void toSettings(const QString &category, const FormatDescriptions &descriptions, diff --git a/src/plugins/texteditor/fontsettingspage.cpp b/src/plugins/texteditor/fontsettingspage.cpp index 5ac0663b4cb..93cd8525bb1 100644 --- a/src/plugins/texteditor/fontsettingspage.cpp +++ b/src/plugins/texteditor/fontsettingspage.cpp @@ -91,8 +91,6 @@ FontSettingsPagePrivate::FontSettingsPagePrivate(const TextEditor::FormatDescrip m_category(category), m_trCategory(trCategory), m_descriptions(fd), - m_value(fd), - m_lastValue(fd), m_curItem(-1) { bool settingsFound = false; diff --git a/src/plugins/texteditor/texteditorsettings.cpp b/src/plugins/texteditor/texteditorsettings.cpp index 5b08017a222..d843128a1d6 100644 --- a/src/plugins/texteditor/texteditorsettings.cpp +++ b/src/plugins/texteditor/texteditorsettings.cpp @@ -152,7 +152,7 @@ void TextEditorSettings::initializeEditor(BaseTextEditor *editor) { // Connect to settings change signals connect(this, SIGNAL(fontSettingsChanged(TextEditor::FontSettings)), - editor, SLOT(setFontSettings(TextEditor::FontSettings))); + editor, SLOT(setFontSettingsIfVisible(TextEditor::FontSettings))); connect(this, SIGNAL(tabSettingsChanged(TextEditor::TabSettings)), editor, SLOT(setTabSettings(TextEditor::TabSettings))); connect(this, SIGNAL(storageSettingsChanged(TextEditor::StorageSettings)), @@ -160,6 +160,9 @@ void TextEditorSettings::initializeEditor(BaseTextEditor *editor) connect(this, SIGNAL(displaySettingsChanged(TextEditor::DisplaySettings)), editor, SLOT(setDisplaySettings(TextEditor::DisplaySettings))); + connect(editor, SIGNAL(requestFontSize(int)), + this, SLOT(fontSizeRequested(int))); + // Apply current settings (tab settings depend on font settings) editor->setFontSettings(fontSettings()); editor->setTabSettings(tabSettings()); @@ -167,6 +170,14 @@ void TextEditorSettings::initializeEditor(BaseTextEditor *editor) editor->setDisplaySettings(displaySettings()); } + +void TextEditorSettings::fontSizeRequested(int pointSize) +{ + FontSettings &fs = const_cast<FontSettings&>(m_fontSettingsPage->fontSettings()); + fs.setFontSize(pointSize); + emit fontSettingsChanged(m_fontSettingsPage->fontSettings()); +} + FontSettings TextEditorSettings::fontSettings() const { return m_fontSettingsPage->fontSettings(); diff --git a/src/plugins/texteditor/texteditorsettings.h b/src/plugins/texteditor/texteditorsettings.h index cb7bfccc603..809f5d621fd 100644 --- a/src/plugins/texteditor/texteditorsettings.h +++ b/src/plugins/texteditor/texteditorsettings.h @@ -73,6 +73,9 @@ signals: void storageSettingsChanged(const TextEditor::StorageSettings &); void displaySettingsChanged(const TextEditor::DisplaySettings &); +private slots: + void fontSizeRequested(int pointSize); + private: FontSettingsPage *m_fontSettingsPage; BehaviorSettingsPage *m_behaviorSettingsPage; -- GitLab