summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/plugins/help/generalsettingspage.cpp12
-rw-r--r--src/plugins/help/generalsettingspage.h4
-rw-r--r--src/plugins/help/generalsettingspage.ui89
-rw-r--r--src/plugins/help/helpplugin.cpp7
-rw-r--r--src/plugins/help/helpplugin.h2
-rw-r--r--src/plugins/help/helpviewer.cpp43
-rw-r--r--src/plugins/help/helpviewer.h11
-rw-r--r--src/plugins/help/helpwidget.cpp13
-rw-r--r--src/plugins/help/helpwidget.h4
-rw-r--r--src/plugins/help/litehtmlhelpviewer.cpp20
-rw-r--r--src/plugins/help/litehtmlhelpviewer.h4
-rw-r--r--src/plugins/help/localhelpmanager.cpp35
-rw-r--r--src/plugins/help/localhelpmanager.h7
-rw-r--r--src/plugins/help/macwebkithelpviewer.h4
-rw-r--r--src/plugins/help/macwebkithelpviewer.mm28
-rw-r--r--src/plugins/help/openpagesmanager.cpp6
-rw-r--r--src/plugins/help/textbrowserhelpviewer.cpp94
-rw-r--r--src/plugins/help/textbrowserhelpviewer.h11
-rw-r--r--src/plugins/help/webenginehelpviewer.cpp20
-rw-r--r--src/plugins/help/webenginehelpviewer.h4
20 files changed, 188 insertions, 230 deletions
diff --git a/src/plugins/help/generalsettingspage.cpp b/src/plugins/help/generalsettingspage.cpp
index 9d17efcee6..f42f6ac316 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 b72168ec1c..0c1353f267 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 3738ccf794..90936861cd 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 4e00c8b789..00a1b28e5a 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 c00cfd42e2..111ddb6b94 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 e4eeffd5cd..806c73ab25 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 b1be6e1dfb..4e0a7f7554 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 65c468ac38..a72ff4c6b4 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 e79314d940..55f90a8e56 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 dcc2673895..30db13f5f2 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 0e35d79ddb..99b1c723fe 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 404b5a9fdd..4615e9716e 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 aac3a46871..467987698b 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 1d1990ad33..98955cb070 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 ac2e721c12..0543332813 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 6fd3daf35a..4fa96c341b 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 3c84e94229..e5e6db26b9 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 b29517e61e..60336635d1 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 6801bd9b53..3766e55162 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 259bc571a9..1869ac6702 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;