diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/plugins/help/generalsettingspage.cpp | 9 | ||||
-rw-r--r-- | src/plugins/help/generalsettingspage.h | 1 | ||||
-rw-r--r-- | src/plugins/help/generalsettingspage.ui | 7 | ||||
-rw-r--r-- | src/plugins/help/helpplugin.cpp | 3 | ||||
-rw-r--r-- | src/plugins/help/helpviewer.cpp | 20 | ||||
-rw-r--r-- | src/plugins/help/helpviewer.h | 6 | ||||
-rw-r--r-- | src/plugins/help/localhelpmanager.cpp | 12 | ||||
-rw-r--r-- | src/plugins/help/localhelpmanager.h | 4 | ||||
-rw-r--r-- | src/plugins/help/textbrowserhelpviewer.cpp | 10 | ||||
-rw-r--r-- | src/plugins/help/textbrowserhelpviewer.h | 1 | ||||
-rw-r--r-- | src/plugins/help/webenginehelpviewer.cpp | 25 | ||||
-rw-r--r-- | src/plugins/help/webenginehelpviewer.h | 3 |
12 files changed, 90 insertions, 11 deletions
diff --git a/src/plugins/help/generalsettingspage.cpp b/src/plugins/help/generalsettingspage.cpp index fc8fa3d321..39033b7bff 100644 --- a/src/plugins/help/generalsettingspage.cpp +++ b/src/plugins/help/generalsettingspage.cpp @@ -119,6 +119,9 @@ QWidget *GeneralSettingsPage::widget() m_returnOnClose = LocalHelpManager::returnOnClose(); m_ui->m_returnOnClose->setChecked(m_returnOnClose); + + m_scrollWheelZoomingEnabled = LocalHelpManager::isScrollWheelZoomingEnabled(); + m_ui->scrollWheelZooming->setChecked(m_scrollWheelZoomingEnabled); } return m_widget; } @@ -159,6 +162,12 @@ void GeneralSettingsPage::apply() m_returnOnClose = close; LocalHelpManager::setReturnOnClose(m_returnOnClose); } + + const bool zoom = m_ui->scrollWheelZooming->isChecked(); + if (m_scrollWheelZoomingEnabled != zoom) { + m_scrollWheelZoomingEnabled = zoom; + LocalHelpManager::setScrollWheelZoomingEnabled(m_scrollWheelZoomingEnabled); + } } void GeneralSettingsPage::setCurrentPage() diff --git a/src/plugins/help/generalsettingspage.h b/src/plugins/help/generalsettingspage.h index 3804039027..3845881c3b 100644 --- a/src/plugins/help/generalsettingspage.h +++ b/src/plugins/help/generalsettingspage.h @@ -69,6 +69,7 @@ private: int m_startOption; bool m_returnOnClose; + bool m_scrollWheelZoomingEnabled; QPointer<QWidget> m_widget; Ui::GeneralSettingsPage *m_ui = nullptr; diff --git a/src/plugins/help/generalsettingspage.ui b/src/plugins/help/generalsettingspage.ui index e303d50f6e..afca6739cb 100644 --- a/src/plugins/help/generalsettingspage.ui +++ b/src/plugins/help/generalsettingspage.ui @@ -289,6 +289,13 @@ </property> <layout class="QVBoxLayout" name="verticalLayout_4"> <item> + <widget class="QCheckBox" name="scrollWheelZooming"> + <property name="text"> + <string>Enable scroll wheel zooming</string> + </property> + </widget> + </item> + <item> <widget class="QCheckBox" name="m_returnOnClose"> <property name="toolTip"> <string>Switches to editor context after last help page is closed.</string> diff --git a/src/plugins/help/helpplugin.cpp b/src/plugins/help/helpplugin.cpp index 7703541670..7abdee2c7c 100644 --- a/src/plugins/help/helpplugin.cpp +++ b/src/plugins/help/helpplugin.cpp @@ -495,6 +495,9 @@ HelpViewer *HelpPlugin::createHelpViewer(qreal zoom) // initialize zoom viewer->setScale(zoom); + viewer->setScrollWheelZoomingEnabled(LocalHelpManager::isScrollWheelZoomingEnabled()); + connect(LocalHelpManager::instance(), &LocalHelpManager::scrollWheelZoomingEnabledChanged, + viewer, &HelpViewer::setScrollWheelZoomingEnabled); // add find support auto agg = new Aggregation::Aggregate; diff --git a/src/plugins/help/helpviewer.cpp b/src/plugins/help/helpviewer.cpp index 1c40bbd111..d667c3b26c 100644 --- a/src/plugins/help/helpviewer.cpp +++ b/src/plugins/help/helpviewer.cpp @@ -91,6 +91,16 @@ HelpViewer::~HelpViewer() restoreOverrideCursor(); } +void HelpViewer::setScrollWheelZoomingEnabled(bool enabled) +{ + m_scrollWheelZoomingEnabled = enabled; +} + +bool HelpViewer::isScrollWheelZoomingEnabled() const +{ + return m_scrollWheelZoomingEnabled; +} + void HelpViewer::setActionVisible(Action action, bool visible) { if (visible) @@ -162,6 +172,16 @@ void HelpViewer::home() setSource(LocalHelpManager::homePage()); } +void HelpViewer::wheelEvent(QWheelEvent *event) +{ + if (m_scrollWheelZoomingEnabled && event->modifiers() == Qt::ControlModifier) { + event->accept(); + event->delta() > 0 ? scaleUp() : scaleDown(); + } else { + QWidget::wheelEvent(event); + } +} + void HelpViewer::slotLoadStarted() { ++m_loadOverrideStack; diff --git a/src/plugins/help/helpviewer.h b/src/plugins/help/helpviewer.h index 0a24fb7222..d502d7c664 100644 --- a/src/plugins/help/helpviewer.h +++ b/src/plugins/help/helpviewer.h @@ -57,6 +57,9 @@ public: virtual qreal scale() const = 0; virtual void setScale(qreal scale) = 0; + void setScrollWheelZoomingEnabled(bool enabled); + bool isScrollWheelZoomingEnabled() const; + virtual QString title() const = 0; virtual QUrl source() const = 0; @@ -105,12 +108,15 @@ signals: void externalPageRequested(const QUrl &url); protected: + void wheelEvent(QWheelEvent *event) override; + void slotLoadStarted(); void slotLoadFinished(); void restoreOverrideCursor(); Actions m_visibleActions; + bool m_scrollWheelZoomingEnabled = true; int m_loadOverrideStack = 0; }; diff --git a/src/plugins/help/localhelpmanager.cpp b/src/plugins/help/localhelpmanager.cpp index 3f698f2f28..140aa4a935 100644 --- a/src/plugins/help/localhelpmanager.cpp +++ b/src/plugins/help/localhelpmanager.cpp @@ -65,6 +65,7 @@ static const char kFontSizeKey[] = "Help/FallbackFontSize"; 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"; @@ -225,6 +226,17 @@ void LocalHelpManager::setReturnOnClose(bool returnOnClose) emit m_instance->returnOnCloseChanged(); } +bool LocalHelpManager::isScrollWheelZoomingEnabled() +{ + return Core::ICore::settings()->value(kUseScrollWheelZooming, true).toBool(); +} + +void LocalHelpManager::setScrollWheelZoomingEnabled(bool enabled) +{ + Core::ICore::settings()->setValue(kUseScrollWheelZooming, enabled); + emit m_instance->scrollWheelZoomingEnabledChanged(enabled); +} + QStringList LocalHelpManager::lastShownPages() { const QVariant value = Core::ICore::settings()->value(kLastShownPagesKey, QVariant()); diff --git a/src/plugins/help/localhelpmanager.h b/src/plugins/help/localhelpmanager.h index bc8cd3b94a..7b330ade30 100644 --- a/src/plugins/help/localhelpmanager.h +++ b/src/plugins/help/localhelpmanager.h @@ -78,6 +78,9 @@ public: static bool returnOnClose(); static void setReturnOnClose(bool returnOnClose); + static bool isScrollWheelZoomingEnabled(); + static void setScrollWheelZoomingEnabled(bool enabled); + static QStringList lastShownPages(); static void setLastShownPages(const QStringList &pages); @@ -106,6 +109,7 @@ signals: void filterIndexChanged(int index); void fallbackFontChanged(const QFont &font); void returnOnCloseChanged(); + void scrollWheelZoomingEnabledChanged(bool enabled); private: static bool m_guiNeedsSetup; diff --git a/src/plugins/help/textbrowserhelpviewer.cpp b/src/plugins/help/textbrowserhelpviewer.cpp index d729535fa3..02afab8d4d 100644 --- a/src/plugins/help/textbrowserhelpviewer.cpp +++ b/src/plugins/help/textbrowserhelpviewer.cpp @@ -406,16 +406,6 @@ bool TextBrowserHelpWidget::eventFilter(QObject *obj, QEvent *event) return QTextBrowser::eventFilter(obj, event); } -void TextBrowserHelpWidget::wheelEvent(QWheelEvent *e) -{ - if (e->modifiers() == Qt::ControlModifier) { - e->accept(); - e->delta() > 0 ? scaleUp() : scaleDown(); - } else { - 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 3e046a8771..52d5b7ce2b 100644 --- a/src/plugins/help/textbrowserhelpviewer.h +++ b/src/plugins/help/textbrowserhelpviewer.h @@ -98,7 +98,6 @@ public: 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; diff --git a/src/plugins/help/webenginehelpviewer.cpp b/src/plugins/help/webenginehelpviewer.cpp index 60773b91fe..197f356d79 100644 --- a/src/plugins/help/webenginehelpviewer.cpp +++ b/src/plugins/help/webenginehelpviewer.cpp @@ -292,6 +292,31 @@ WebView::WebView(WebEngineHelpViewer *viewer) { } +bool WebView::event(QEvent *ev) +{ + // work around QTBUG-43602 + if (ev->type() == QEvent::ChildAdded) { + auto ce = static_cast<QChildEvent *>(ev); + ce->child()->installEventFilter(this); + } else if (ev->type() == QEvent::ChildRemoved) { + auto ce = static_cast<QChildEvent *>(ev); + ce->child()->removeEventFilter(this); + } + return QWebEngineView::event(ev); +} + +bool WebView::eventFilter(QObject *src, QEvent *e) +{ + Q_UNUSED(src) + // work around QTBUG-43602 + if (m_viewer->isScrollWheelZoomingEnabled() && e->type() == QEvent::Wheel) { + auto we = static_cast<QWheelEvent *>(e); + if (we->modifiers() == Qt::ControlModifier) + return true; + } + return false; +} + void WebView::contextMenuEvent(QContextMenuEvent *event) { QMenu *menu = page()->createStandardContextMenu(); diff --git a/src/plugins/help/webenginehelpviewer.h b/src/plugins/help/webenginehelpviewer.h index cffe26af21..f781889108 100644 --- a/src/plugins/help/webenginehelpviewer.h +++ b/src/plugins/help/webenginehelpviewer.h @@ -53,6 +53,9 @@ class WebView : public QWebEngineView public: explicit WebView(WebEngineHelpViewer *viewer); + bool event(QEvent *ev) override; + bool eventFilter(QObject *src, QEvent *e) override; + protected: void contextMenuEvent(QContextMenuEvent *event) override; |