diff options
author | Jarek Kobus <jaroslaw.kobus@qt.io> | 2021-01-14 13:21:15 +0100 |
---|---|---|
committer | Jarek Kobus <jaroslaw.kobus@qt.io> | 2021-01-19 16:24:04 +0000 |
commit | 291f46386fc4432380f96559e5fef66468d48496 (patch) | |
tree | ebb06d83926599587295053fb8328aaaac9e072c /src/plugins/help | |
parent | aa974e6816b7fc5cdd60b855a2e2b959e07dab23 (diff) |
Add "Zoom" setting to the Help font settings
If the scrollWheelZooming is enabled, this
setting will get updated when using scroll wheel.
It will also be used when zooming in/out
by using keyboard shortcuts.
Fixes: QTCREATORBUG-25109
Fixes: QTCREATORBUG-25230
Fixes: QTCREATORBUG-23731
Change-Id: I9d22632b4c034ce236fa39dba074df4a2746ff84
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
Diffstat (limited to 'src/plugins/help')
-rw-r--r-- | src/plugins/help/generalsettingspage.cpp | 12 | ||||
-rw-r--r-- | src/plugins/help/generalsettingspage.h | 4 | ||||
-rw-r--r-- | src/plugins/help/generalsettingspage.ui | 89 | ||||
-rw-r--r-- | src/plugins/help/helpplugin.cpp | 7 | ||||
-rw-r--r-- | src/plugins/help/helpplugin.h | 2 | ||||
-rw-r--r-- | src/plugins/help/helpviewer.cpp | 43 | ||||
-rw-r--r-- | src/plugins/help/helpviewer.h | 11 | ||||
-rw-r--r-- | src/plugins/help/helpwidget.cpp | 13 | ||||
-rw-r--r-- | src/plugins/help/helpwidget.h | 4 | ||||
-rw-r--r-- | src/plugins/help/litehtmlhelpviewer.cpp | 20 | ||||
-rw-r--r-- | src/plugins/help/litehtmlhelpviewer.h | 4 | ||||
-rw-r--r-- | src/plugins/help/localhelpmanager.cpp | 35 | ||||
-rw-r--r-- | src/plugins/help/localhelpmanager.h | 7 | ||||
-rw-r--r-- | src/plugins/help/macwebkithelpviewer.h | 4 | ||||
-rw-r--r-- | src/plugins/help/macwebkithelpviewer.mm | 28 | ||||
-rw-r--r-- | src/plugins/help/openpagesmanager.cpp | 6 | ||||
-rw-r--r-- | src/plugins/help/textbrowserhelpviewer.cpp | 94 | ||||
-rw-r--r-- | src/plugins/help/textbrowserhelpviewer.h | 11 | ||||
-rw-r--r-- | src/plugins/help/webenginehelpviewer.cpp | 20 | ||||
-rw-r--r-- | src/plugins/help/webenginehelpviewer.h | 4 |
20 files changed, 188 insertions, 230 deletions
diff --git a/src/plugins/help/generalsettingspage.cpp b/src/plugins/help/generalsettingspage.cpp index 9d17efcee69..f42f6ac3164 100644 --- a/src/plugins/help/generalsettingspage.cpp +++ b/src/plugins/help/generalsettingspage.cpp @@ -70,6 +70,8 @@ QWidget *GeneralSettingsPage::widget() m_ui->styleComboBox->setEditable(false); m_font = LocalHelpManager::fallbackFont(); + m_fontZoom = LocalHelpManager::fontZoom(); + m_ui->zoomSpinBox->setValue(m_fontZoom); updateFontSizeSelector(); updateFontStyleSelector(); @@ -92,6 +94,9 @@ QWidget *GeneralSettingsPage::widget() connect(m_ui->sizeComboBox, QOverload<int>::of(&QComboBox::currentIndexChanged), this, &GeneralSettingsPage::updateFont); + connect(m_ui->zoomSpinBox, QOverload<int>::of(&QSpinBox::valueChanged), + this, [this](int value) { m_fontZoom = value; }); + m_homePage = LocalHelpManager::homePage(); m_ui->homePageLineEdit->setText(m_homePage); @@ -150,10 +155,11 @@ void GeneralSettingsPage::apply() if (!m_ui) // page was never shown return; - if (m_font != LocalHelpManager::fallbackFont()) { + if (m_font != LocalHelpManager::fallbackFont()) LocalHelpManager::setFallbackFont(m_font); - emit fontChanged(); - } + + if (m_fontZoom != LocalHelpManager::fontZoom()) + LocalHelpManager::setFontZoom(m_fontZoom); QString homePage = QUrl::fromUserInput(m_ui->homePageLineEdit->text()).toString(); if (homePage.isEmpty()) diff --git a/src/plugins/help/generalsettingspage.h b/src/plugins/help/generalsettingspage.h index b72168ec1c2..0c1353f267f 100644 --- a/src/plugins/help/generalsettingspage.h +++ b/src/plugins/help/generalsettingspage.h @@ -44,9 +44,6 @@ public: void apply() override; void finish() override; -signals: - void fontChanged(); - private: void setCurrentPage(); void setBlankPage(); @@ -61,6 +58,7 @@ private: int closestPointSizeIndex(int desiredPointSize) const; QFont m_font; + int m_fontZoom = 100; QFontDatabase m_fontDatabase; QString m_homePage; diff --git a/src/plugins/help/generalsettingspage.ui b/src/plugins/help/generalsettingspage.ui index 3738ccf7949..90936861cdb 100644 --- a/src/plugins/help/generalsettingspage.ui +++ b/src/plugins/help/generalsettingspage.ui @@ -6,8 +6,8 @@ <rect> <x>0</x> <y>0</y> - <width>695</width> - <height>472</height> + <width>706</width> + <height>594</height> </rect> </property> <property name="windowTitle"> @@ -19,23 +19,23 @@ <property name="title"> <string>Font</string> </property> - <layout class="QVBoxLayout" name="verticalLayout_5"> - <item> + <layout class="QGridLayout" name="gridLayout"> + <item row="0" column="0"> + <widget class="QLabel" name="familyLabel"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Fixed" vsizetype="Fixed"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="text"> + <string>Family:</string> + </property> + </widget> + </item> + <item row="0" column="1"> <layout class="QHBoxLayout" name="horizontalLayout_2"> <item> - <widget class="QLabel" name="familyLabel"> - <property name="sizePolicy"> - <sizepolicy hsizetype="Fixed" vsizetype="Fixed"> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - <property name="text"> - <string>Family:</string> - </property> - </widget> - </item> - <item> <widget class="QFontComboBox" name="familyComboBox"/> </item> <item> @@ -123,7 +123,7 @@ </property> <property name="sizeHint" stdset="0"> <size> - <width>0</width> + <width>13</width> <height>20</height> </size> </property> @@ -131,16 +131,65 @@ </item> </layout> </item> - <item> + <item row="1" column="0" colspan="2"> <widget class="QLabel" name="label"> <property name="text"> - <string>Note: This setting takes effect only if the HTML file does not use a style sheet.</string> + <string>Note: The above setting takes effect only if the HTML file does not use a style sheet.</string> </property> <property name="wordWrap"> <bool>true</bool> </property> </widget> </item> + <item row="2" column="0"> + <widget class="QLabel" name="zoomLabel"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Fixed" vsizetype="Fixed"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="text"> + <string>Zoom:</string> + </property> + </widget> + </item> + <item row="2" column="1"> + <layout class="QHBoxLayout" name="horizontalLayout_3"> + <item> + <widget class="QSpinBox" name="zoomSpinBox"> + <property name="suffix"> + <string>%</string> + </property> + <property name="minimum"> + <number>10</number> + </property> + <property name="maximum"> + <number>3000</number> + </property> + <property name="singleStep"> + <number>10</number> + </property> + <property name="value"> + <number>100</number> + </property> + </widget> + </item> + <item> + <spacer name="spacer3_2"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>13</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + </layout> + </item> </layout> </widget> </item> diff --git a/src/plugins/help/helpplugin.cpp b/src/plugins/help/helpplugin.cpp index 4e00c8b7890..00a1b28e5a1 100644 --- a/src/plugins/help/helpplugin.cpp +++ b/src/plugins/help/helpplugin.cpp @@ -412,7 +412,7 @@ HelpViewer *HelpPluginPrivate::externalHelpViewer() return m_externalWindow->currentViewer(); } -HelpViewer *HelpPlugin::createHelpViewer(qreal zoom) +HelpViewer *HelpPlugin::createHelpViewer() { const HelpViewerFactory factory = LocalHelpManager::viewerBackend(); QTC_ASSERT(factory.create, return nullptr); @@ -424,7 +424,10 @@ HelpViewer *HelpPlugin::createHelpViewer(qreal zoom) viewer, &HelpViewer::setViewerFont); // initialize zoom - viewer->setScale(zoom); + viewer->setFontZoom(LocalHelpManager::fontZoom()); + connect(LocalHelpManager::instance(), &LocalHelpManager::fontZoomChanged, + viewer, &HelpViewer::setFontZoom); + viewer->setScrollWheelZoomingEnabled(LocalHelpManager::isScrollWheelZoomingEnabled()); connect(LocalHelpManager::instance(), &LocalHelpManager::scrollWheelZoomingEnabledChanged, viewer, &HelpViewer::setScrollWheelZoomingEnabled); diff --git a/src/plugins/help/helpplugin.h b/src/plugins/help/helpplugin.h index c00cfd42e26..111ddb6b942 100644 --- a/src/plugins/help/helpplugin.h +++ b/src/plugins/help/helpplugin.h @@ -48,7 +48,7 @@ public: ~HelpPlugin() final; static void showHelpUrl(const QUrl &url, Core::HelpManager::HelpViewerLocation location); - static HelpViewer *createHelpViewer(qreal zoom); + static HelpViewer *createHelpViewer(); static HelpWidget *modeHelpWidget(); private: diff --git a/src/plugins/help/helpviewer.cpp b/src/plugins/help/helpviewer.cpp index e4eeffd5cda..806c73ab252 100644 --- a/src/plugins/help/helpviewer.cpp +++ b/src/plugins/help/helpviewer.cpp @@ -29,6 +29,7 @@ #include <coreplugin/icore.h> +#include <utils/fadingindicator.h> #include <utils/fileutils.h> #include <utils/temporarydirectory.h> @@ -91,6 +92,11 @@ HelpViewer::~HelpViewer() restoreOverrideCursor(); } +void HelpViewer::setFontZoom(int percentage) +{ + setScale(percentage / 100.0); +} + void HelpViewer::setScrollWheelZoomingEnabled(bool enabled) { m_scrollWheelZoomingEnabled = enabled; @@ -172,14 +178,45 @@ void HelpViewer::home() setSource(LocalHelpManager::homePage()); } +void HelpViewer::scaleUp() +{ + incrementZoom(1); +} + +void HelpViewer::scaleDown() +{ + incrementZoom(-1); +} + +void HelpViewer::resetScale() +{ + applyZoom(100); +} + void HelpViewer::wheelEvent(QWheelEvent *event) { if (m_scrollWheelZoomingEnabled && event->modifiers() == Qt::ControlModifier) { event->accept(); - event->angleDelta().y() > 0 ? scaleUp() : scaleDown(); - } else { - QWidget::wheelEvent(event); + const int deltaY = event->angleDelta().y(); + if (deltaY != 0) + incrementZoom(deltaY / 120); + return; } + QWidget::wheelEvent(event); +} + +void HelpViewer::incrementZoom(int steps) +{ + const int incrementPercentage = 10 * steps; // 10 percent increase by single step + const int previousZoom = LocalHelpManager::fontZoom(); + applyZoom(previousZoom + incrementPercentage); +} + +void HelpViewer::applyZoom(int percentage) +{ + const int newZoom = LocalHelpManager::setFontZoom(percentage); + Utils::FadingIndicator::showText(this, QCoreApplication::translate("Help::HelpViewer", + "Zoom: %1%").arg(newZoom), Utils::FadingIndicator::SmallText); } void HelpViewer::slotLoadStarted() diff --git a/src/plugins/help/helpviewer.h b/src/plugins/help/helpviewer.h index b1be6e1dfb9..4e0a7f7554b 100644 --- a/src/plugins/help/helpviewer.h +++ b/src/plugins/help/helpviewer.h @@ -54,9 +54,9 @@ public: virtual QFont viewerFont() const = 0; virtual void setViewerFont(const QFont &font) = 0; - virtual qreal scale() const = 0; virtual void setScale(qreal scale) = 0; + void setFontZoom(int percentage); void setScrollWheelZoomingEnabled(bool enabled); bool isScrollWheelZoomingEnabled() const; @@ -87,9 +87,9 @@ public: void home(); - virtual void scaleUp() = 0; - virtual void scaleDown() = 0; - virtual void resetScale() = 0; + void scaleUp(); + void scaleDown(); + void resetScale(); virtual void copy() = 0; virtual void stop() = 0; virtual void forward() = 0; @@ -117,6 +117,9 @@ protected: Actions m_visibleActions; bool m_scrollWheelZoomingEnabled = true; int m_loadOverrideStack = 0; +private: + void incrementZoom(int steps); + void applyZoom(int percentage); }; } // namespace Internal diff --git a/src/plugins/help/helpwidget.cpp b/src/plugins/help/helpwidget.cpp index 65c468ac386..a72ff4c6b48 100644 --- a/src/plugins/help/helpwidget.cpp +++ b/src/plugins/help/helpwidget.cpp @@ -490,7 +490,7 @@ HelpWidget::HelpWidget(const Core::Context &context, WidgetStyle style, QWidget connect(reload, &QAction::triggered, this, [this]() { const int index = m_viewerStack->currentIndex(); HelpViewer *previous = currentViewer(); - insertViewer(index, previous->source(), previous->scale()); + insertViewer(index, previous->source()); removeViewerAt(index + 1); setCurrentIndex(index); }); @@ -711,15 +711,15 @@ void HelpWidget::setCurrentIndex(int index) emit currentIndexChanged(index); } -HelpViewer *HelpWidget::addViewer(const QUrl &url, qreal zoom) +HelpViewer *HelpWidget::addViewer(const QUrl &url) { - return insertViewer(m_viewerStack->count(), url, zoom); + return insertViewer(m_viewerStack->count(), url); } -HelpViewer *HelpWidget::insertViewer(int index, const QUrl &url, qreal zoom) +HelpViewer *HelpWidget::insertViewer(int index, const QUrl &url) { m_model.beginInsertRows({}, index, index); - HelpViewer *viewer = HelpPlugin::createHelpViewer(zoom); + HelpViewer *viewer = HelpPlugin::createHelpViewer(); m_viewerStack->insertWidget(index, viewer); viewer->setFocus(Qt::OtherFocusReason); viewer->setActionVisible(HelpViewer::Action::NewPage, supportsPages()); @@ -900,19 +900,16 @@ void HelpWidget::saveState() const { // TODO generalize if (m_style == ModeWidget) { - QList<qreal> zoomFactors; QStringList currentPages; for (int i = 0; i < viewerCount(); ++i) { const HelpViewer *const viewer = viewerAt(i); const QUrl &source = viewer->source(); if (source.isValid()) { currentPages.append(source.toString()); - zoomFactors.append(viewer->scale()); } } LocalHelpManager::setLastShownPages(currentPages); - LocalHelpManager::setLastShownPagesZoom(zoomFactors); LocalHelpManager::setLastSelectedTab(currentIndex()); } } diff --git a/src/plugins/help/helpwidget.h b/src/plugins/help/helpwidget.h index e79314d940c..55f90a8e566 100644 --- a/src/plugins/help/helpwidget.h +++ b/src/plugins/help/helpwidget.h @@ -87,7 +87,7 @@ public: HelpViewer *currentViewer() const; int currentIndex() const; void setCurrentIndex(int index); - HelpViewer *addViewer(const QUrl &url, qreal zoom = 0); + HelpViewer *addViewer(const QUrl &url); void removeViewerAt(int index); int viewerCount() const; @@ -118,7 +118,7 @@ signals: private: int indexOf(HelpViewer *viewer) const; - HelpViewer *insertViewer(int index, const QUrl &url, qreal zoom); + HelpViewer *insertViewer(int index, const QUrl &url); void updateBackMenu(); void updateForwardMenu(); void updateWindowTitle(); diff --git a/src/plugins/help/litehtmlhelpviewer.cpp b/src/plugins/help/litehtmlhelpviewer.cpp index dcc2673895f..30db13f5f26 100644 --- a/src/plugins/help/litehtmlhelpviewer.cpp +++ b/src/plugins/help/litehtmlhelpviewer.cpp @@ -99,26 +99,6 @@ void LiteHtmlHelpViewer::setViewerFont(const QFont &newFont) m_viewer->setDefaultFont(newFont); } -void LiteHtmlHelpViewer::scaleUp() -{ - setScale(scale() * 1.1); -} - -void LiteHtmlHelpViewer::scaleDown() -{ - setScale(scale() * .9); -} - -void LiteHtmlHelpViewer::resetScale() -{ - m_viewer->setZoomFactor(1); -} - -qreal LiteHtmlHelpViewer::scale() const -{ - return m_viewer->zoomFactor(); -} - void LiteHtmlHelpViewer::setScale(qreal scale) { // interpret 0 as "default" diff --git a/src/plugins/help/litehtmlhelpviewer.h b/src/plugins/help/litehtmlhelpviewer.h index 0e35d79ddbd..99b1c723fe2 100644 --- a/src/plugins/help/litehtmlhelpviewer.h +++ b/src/plugins/help/litehtmlhelpviewer.h @@ -48,7 +48,6 @@ public: QFont viewerFont() const override; void setViewerFont(const QFont &font) override; - qreal scale() const override; void setScale(qreal scale) override; QString title() const override; @@ -67,9 +66,6 @@ public: bool findText(const QString &text, Core::FindFlags flags, bool incremental, bool fromSearch, bool *wrapped = nullptr) override; - void scaleUp() override; - void scaleDown() override; - void resetScale() override; void copy() override; void stop() override; void forward() override; diff --git a/src/plugins/help/localhelpmanager.cpp b/src/plugins/help/localhelpmanager.cpp index 404b5a9fdd7..4615e9716e6 100644 --- a/src/plugins/help/localhelpmanager.cpp +++ b/src/plugins/help/localhelpmanager.cpp @@ -83,16 +83,17 @@ static const char kHelpHomePageKey[] = "Help/HomePage"; static const char kFontFamilyKey[] = "Help/FallbackFontFamily"; static const char kFontStyleNameKey[] = "Help/FallbackFontStyleName"; static const char kFontSizeKey[] = "Help/FallbackFontSize"; +static const char kFontZoomKey[] = "Help/FontZoom"; static const char kStartOptionKey[] = "Help/StartOption"; static const char kContextHelpOptionKey[] = "Help/ContextHelpOption"; static const char kReturnOnCloseKey[] = "Help/ReturnOnClose"; static const char kUseScrollWheelZooming[] = "Help/UseScrollWheelZooming"; static const char kLastShownPagesKey[] = "Help/LastShownPages"; -static const char kLastShownPagesZoomKey[] = "Help/LastShownPagesZoom"; static const char kLastSelectedTabKey[] = "Help/LastSelectedTab"; static const char kViewerBackend[] = "Help/ViewerBackend"; static const int kDefaultFallbackFontSize = 14; +static const int kDefaultFontZoom = 100; const int kDefaultStartOption = LocalHelpManager::ShowLastPages; const int kDefaultContextHelpOption = Core::HelpManager::SideBySideIfPossible; const bool kDefaultReturnOnClose = false; @@ -185,6 +186,22 @@ void LocalHelpManager::setFallbackFont(const QFont &font) emit m_instance->fallbackFontChanged(font); } +int LocalHelpManager::fontZoom() +{ + return Core::ICore::settings()->value(kFontZoomKey, kDefaultFontZoom).toInt(); +} + +int LocalHelpManager::setFontZoom(int percentage) +{ + const int newZoom = qBound(10, percentage, 3000); + if (newZoom == fontZoom()) + return newZoom; + + Core::ICore::settings()->setValueWithDefault(kFontZoomKey, newZoom, kDefaultFontZoom); + emit m_instance->fontZoomChanged(newZoom); + return newZoom; +} + LocalHelpManager::StartOption LocalHelpManager::startOption() { const QVariant value = Core::ICore::settings()->value(kStartOptionKey, kDefaultStartOption); @@ -284,22 +301,6 @@ void LocalHelpManager::setLastShownPages(const QStringList &pages) pages.join(Constants::ListSeparator)); } -QList<float> LocalHelpManager::lastShownPagesZoom() -{ - const QVariant value = Core::ICore::settings()->value(kLastShownPagesZoomKey, QVariant()); - const QStringList stringValues = value.toString().split(Constants::ListSeparator, - Qt::SkipEmptyParts); - return Utils::transform(stringValues, [](const QString &str) { return str.toFloat(); }); -} - -void LocalHelpManager::setLastShownPagesZoom(const QList<qreal> &zoom) -{ - const QStringList stringValues = Utils::transform(zoom, - [](qreal z) { return QString::number(z); }); - Core::ICore::settings()->setValueWithDefault(kLastShownPagesZoomKey, - stringValues.join(Constants::ListSeparator)); -} - int LocalHelpManager::lastSelectedTab() { const QVariant value = Core::ICore::settings()->value(kLastSelectedTabKey, 0); diff --git a/src/plugins/help/localhelpmanager.h b/src/plugins/help/localhelpmanager.h index aac3a46871f..467987698b5 100644 --- a/src/plugins/help/localhelpmanager.h +++ b/src/plugins/help/localhelpmanager.h @@ -83,6 +83,9 @@ public: static QFont fallbackFont(); static void setFallbackFont(const QFont &font); + static int fontZoom(); + static int setFontZoom(int percentage); + static StartOption startOption(); static void setStartOption(StartOption option); @@ -98,9 +101,6 @@ public: static QStringList lastShownPages(); static void setLastShownPages(const QStringList &pages); - static QList<float> lastShownPagesZoom(); - static void setLastShownPagesZoom(const QList<qreal> &zoom); - static int lastSelectedTab(); static void setLastSelectedTab(int index); @@ -137,6 +137,7 @@ signals: void filterIndexChanged(int index); #endif void fallbackFontChanged(const QFont &font); + void fontZoomChanged(int percentage); void returnOnCloseChanged(); void scrollWheelZoomingEnabledChanged(bool enabled); void contextHelpOptionChanged(Core::HelpManager::HelpViewerLocation option); diff --git a/src/plugins/help/macwebkithelpviewer.h b/src/plugins/help/macwebkithelpviewer.h index 1d1990ad331..98955cb070a 100644 --- a/src/plugins/help/macwebkithelpviewer.h +++ b/src/plugins/help/macwebkithelpviewer.h @@ -73,7 +73,6 @@ public: QFont viewerFont() const override; void setViewerFont(const QFont &font) override; - qreal scale() const override; void setScale(qreal scale) override; QString title() const override; @@ -97,9 +96,6 @@ public: MacWebKitHelpWidget *widget() const { return m_widget; } public: - void scaleUp() override; - void scaleDown() override; - void resetScale() override; void copy() override; void stop() override; void forward() override; diff --git a/src/plugins/help/macwebkithelpviewer.mm b/src/plugins/help/macwebkithelpviewer.mm index ac2e721c12a..05433328137 100644 --- a/src/plugins/help/macwebkithelpviewer.mm +++ b/src/plugins/help/macwebkithelpviewer.mm @@ -553,34 +553,6 @@ void MacWebKitHelpViewer::setViewerFont(const QFont &font) } } -void MacWebKitHelpViewer::scaleUp() -{ - @autoreleasepool { - m_widget->webView().textSizeMultiplier += 0.1f; - } -} - -void MacWebKitHelpViewer::scaleDown() -{ - @autoreleasepool { - m_widget->webView().textSizeMultiplier = qMax(0.1f, m_widget->webView().textSizeMultiplier - 0.1f); - } -} - -void MacWebKitHelpViewer::resetScale() -{ - @autoreleasepool { - m_widget->webView().textSizeMultiplier = 1.0f; - } -} - -qreal MacWebKitHelpViewer::scale() const -{ - @autoreleasepool { - return m_widget->webView().textSizeMultiplier; - } -} - void MacWebKitHelpViewer::setScale(qreal scale) { m_widget->webView().textSizeMultiplier = (scale <= 0.0 ? 1.0 : scale); diff --git a/src/plugins/help/openpagesmanager.cpp b/src/plugins/help/openpagesmanager.cpp index 6fd3daf35a7..4fa96c341b7 100644 --- a/src/plugins/help/openpagesmanager.cpp +++ b/src/plugins/help/openpagesmanager.cpp @@ -137,15 +137,11 @@ void OpenPagesManager::setupInitialPages() const int pageCount = lastShownPageList.count(); if (pageCount > 0) { - QList<float> zoomFactors = LocalHelpManager::lastShownPagesZoom(); - while (zoomFactors.count() < pageCount) - zoomFactors.append(0.); - initialPage = LocalHelpManager::lastSelectedTab(); for (int curPage = 0; curPage < pageCount; ++curPage) { const QString &curFile = lastShownPageList.at(curPage); if (engine.findFile(curFile).isValid() || curFile == Help::Constants::AboutBlank) { - m_helpWidget->addViewer(curFile, zoomFactors.at(curPage)); + m_helpWidget->addViewer(curFile); } else if (curPage <= initialPage && initialPage > 0) { --initialPage; } diff --git a/src/plugins/help/textbrowserhelpviewer.cpp b/src/plugins/help/textbrowserhelpviewer.cpp index 3c84e94229e..e5e6db26b99 100644 --- a/src/plugins/help/textbrowserhelpviewer.cpp +++ b/src/plugins/help/textbrowserhelpviewer.cpp @@ -82,54 +82,22 @@ QFont TextBrowserHelpViewer::viewerFont() const void TextBrowserHelpViewer::setViewerFont(const QFont &newFont) { - m_textBrowser->forceFont = true; - m_textBrowser->setFont(newFont); - m_textBrowser->forceFont = false; + setFontAndScale(newFont, LocalHelpManager::fontZoom() / 100.0); } -void TextBrowserHelpViewer::scaleUp() +void TextBrowserHelpViewer::setFontAndScale(const QFont &font, qreal scale) { - m_textBrowser->scaleUp(); -} - -void TextBrowserHelpViewer::scaleDown() -{ - m_textBrowser->scaleDown(); -} - -void TextBrowserHelpViewer::resetScale() -{ - m_textBrowser->withFixedTopPosition([this] { - if (m_textBrowser->zoomCount != 0) { - m_textBrowser->forceFont = true; - m_textBrowser->zoomOut(m_textBrowser->zoomCount); - m_textBrowser->forceFont = false; - } - m_textBrowser->zoomCount = 0; + m_textBrowser->withFixedTopPosition([this, &font, scale] { + QFont newFont = font; + const float newSize = font.pointSizeF() * scale; + newFont.setPointSizeF(newSize); + m_textBrowser->setFont(newFont); }); } -qreal TextBrowserHelpViewer::scale() const -{ - return m_textBrowser->zoomCount; -} - void TextBrowserHelpViewer::setScale(qreal scale) { - m_textBrowser->withFixedTopPosition([this, &scale] { - m_textBrowser->forceFont = true; - if (scale > 10) - scale = 10; - else if (scale < -5) - scale = -5; - int diff = int(scale) - m_textBrowser->zoomCount; - if (diff > 0) - m_textBrowser->zoomIn(diff); - else if (diff < 0) - m_textBrowser->zoomOut(-diff); - m_textBrowser->zoomCount = int(scale); - m_textBrowser->forceFont = false; - }); + setFontAndScale(LocalHelpManager::fallbackFont(), scale); } QString TextBrowserHelpViewer::title() const @@ -302,8 +270,6 @@ void TextBrowserHelpViewer::goToHistoryItem() TextBrowserHelpWidget::TextBrowserHelpWidget(TextBrowserHelpViewer *parent) : QTextBrowser(parent) - , zoomCount(0) - , forceFont(false) , m_parent(parent) { installEventFilter(this); @@ -350,30 +316,6 @@ void TextBrowserHelpWidget::scrollToTextPosition(int position) } } -void TextBrowserHelpWidget::scaleUp() -{ - withFixedTopPosition([this] { - if (zoomCount < 10) { - zoomCount++; - forceFont = true; - zoomIn(); - forceFont = false; - } - }); -} - -void TextBrowserHelpWidget::scaleDown() -{ - withFixedTopPosition([this] { - if (zoomCount > -5) { - zoomCount--; - forceFont = true; - zoomOut(); - forceFont = false; - } - }); -} - void TextBrowserHelpWidget::contextMenuEvent(QContextMenuEvent *event) { QMenu menu("", nullptr); @@ -409,10 +351,7 @@ void TextBrowserHelpWidget::contextMenuEvent(QContextMenuEvent *event) bool TextBrowserHelpWidget::eventFilter(QObject *obj, QEvent *event) { if (obj == this) { - if (event->type() == QEvent::FontChange) { - if (!forceFont) - return true; - } else if (event->type() == QEvent::KeyPress) { + if (event->type() == QEvent::KeyPress) { auto keyEvent = static_cast<QKeyEvent *>(event); if (keyEvent->key() == Qt::Key_Slash) { keyEvent->accept(); @@ -428,6 +367,21 @@ bool TextBrowserHelpWidget::eventFilter(QObject *obj, QEvent *event) return QTextBrowser::eventFilter(obj, event); } +void TextBrowserHelpWidget::wheelEvent(QWheelEvent *e) +{ + // These two conditions should match those defined in QTextEdit::wheelEvent() + if (!(textInteractionFlags() & Qt::TextEditable)) { + if (e->modifiers() & Qt::ControlModifier) { + // Don't handle wheelEvent by the QTextEdit superclass, which zooms the + // view in a broken way. We handle it properly through the sequence: + // HelpViewer::wheelEvent() -> LocalHelpManager::setFontZoom() -> + // HelpViewer::setFontZoom() -> TextBrowserHelpViewer::setFontAndScale(). + return; + } + } + QTextBrowser::wheelEvent(e); +} + void TextBrowserHelpWidget::mousePressEvent(QMouseEvent *e) { if (Utils::HostOsInfo::isLinuxHost() && m_parent->handleForwardBackwardMouseButtons(e)) diff --git a/src/plugins/help/textbrowserhelpviewer.h b/src/plugins/help/textbrowserhelpviewer.h index b29517e61eb..60336635d19 100644 --- a/src/plugins/help/textbrowserhelpviewer.h +++ b/src/plugins/help/textbrowserhelpviewer.h @@ -46,7 +46,6 @@ public: QFont viewerFont() const override; void setViewerFont(const QFont &font) override; - qreal scale() const override; void setScale(qreal scale) override; QString title() const override; @@ -65,9 +64,6 @@ public: bool findText(const QString &text, Core::FindFlags flags, bool incremental, bool fromSearch, bool *wrapped = nullptr) override; - void scaleUp() override; - void scaleDown() override; - void resetScale() override; void copy() override; void stop() override; void forward() override; @@ -76,6 +72,7 @@ public: private: void goToHistoryItem(); + void setFontAndScale(const QFont &font, qreal scale); TextBrowserHelpWidget *m_textBrowser; }; @@ -89,14 +86,12 @@ public: QVariant loadResource(int type, const QUrl &name) override; - void scaleUp(); - void scaleDown(); - void withFixedTopPosition(const std::function<void()> &action); protected: void contextMenuEvent(QContextMenuEvent *event) override; bool eventFilter(QObject *obj, QEvent *event) override; + void wheelEvent(QWheelEvent *e) override; void mousePressEvent(QMouseEvent *e) override; void mouseReleaseEvent(QMouseEvent *e) override; void resizeEvent(QResizeEvent *e) override; @@ -105,8 +100,6 @@ private: QString linkAt(const QPoint &pos); void scrollToTextPosition(int position); - int zoomCount; - bool forceFont; TextBrowserHelpViewer *m_parent; friend class Help::Internal::TextBrowserHelpViewer; }; diff --git a/src/plugins/help/webenginehelpviewer.cpp b/src/plugins/help/webenginehelpviewer.cpp index 6801bd9b535..3766e551620 100644 --- a/src/plugins/help/webenginehelpviewer.cpp +++ b/src/plugins/help/webenginehelpviewer.cpp @@ -173,11 +173,6 @@ void WebEngineHelpViewer::setViewerFont(const QFont &font) webSettings->setFontSize(QWebEngineSettings::DefaultFontSize, font.pointSize()); } -qreal WebEngineHelpViewer::scale() const -{ - return m_widget->zoomFactor(); -} - void WebEngineHelpViewer::setScale(qreal scale) { m_widget->setZoomFactor(scale); @@ -277,21 +272,6 @@ WebEngineHelpPage *WebEngineHelpViewer::page() const return static_cast<WebEngineHelpPage *>(m_widget->page()); } -void WebEngineHelpViewer::scaleUp() -{ - m_widget->setZoomFactor(m_widget->zoomFactor() + 0.1); -} - -void WebEngineHelpViewer::scaleDown() -{ - m_widget->setZoomFactor(qMax(qreal(0.1), m_widget->zoomFactor() - qreal(0.1))); -} - -void WebEngineHelpViewer::resetScale() -{ - m_widget->setZoomFactor(1.0); -} - void WebEngineHelpViewer::copy() { m_widget->triggerPageAction(QWebEnginePage::Copy); diff --git a/src/plugins/help/webenginehelpviewer.h b/src/plugins/help/webenginehelpviewer.h index 259bc571a92..1869ac67027 100644 --- a/src/plugins/help/webenginehelpviewer.h +++ b/src/plugins/help/webenginehelpviewer.h @@ -84,7 +84,6 @@ public: QFont viewerFont() const override; void setViewerFont(const QFont &font) override; - qreal scale() const override; void setScale(qreal scale) override; QString title() const override; QUrl source() const override; @@ -99,9 +98,6 @@ public: WebEngineHelpPage *page() const; - void scaleUp() override; - void scaleDown() override; - void resetScale() override; void copy() override; void stop() override; void forward() override; |