diff options
author | Anu Aliyas <anu.aliyas@qt.io> | 2023-07-24 12:15:37 +0200 |
---|---|---|
committer | Anu Aliyas <anu.aliyas@qt.io> | 2024-03-07 17:22:31 +0100 |
commit | f351131e7549452247bbe2b71e51539a2824812c (patch) | |
tree | 3176d6fff26b84fb5fcff2e3d6ff1cf767620765 /examples/webenginewidgets/simplebrowser | |
parent | 290d7462696664a1e035082793907d3c698bc987 (diff) |
Add setting method to set image animation policy
- added a method to set image animation policy in QWebEngineSettings
Fixes: QTBUG-86154
Change-Id: I8b3ab6067f9cff4219b0da90bb8601406cb98e24
Reviewed-by: Michael BrĂ¼ning <michael.bruning@qt.io>
Diffstat (limited to 'examples/webenginewidgets/simplebrowser')
-rw-r--r-- | examples/webenginewidgets/simplebrowser/webview.cpp | 59 | ||||
-rw-r--r-- | examples/webenginewidgets/simplebrowser/webview.h | 5 |
2 files changed, 64 insertions, 0 deletions
diff --git a/examples/webenginewidgets/simplebrowser/webview.cpp b/examples/webenginewidgets/simplebrowser/webview.cpp index 95c67c8ce..240465b46 100644 --- a/examples/webenginewidgets/simplebrowser/webview.cpp +++ b/examples/webenginewidgets/simplebrowser/webview.cpp @@ -63,6 +63,14 @@ WebView::WebView(QWidget *parent) }); } +WebView::~WebView() +{ + if (m_imageAnimationGroup) + delete m_imageAnimationGroup; + + m_imageAnimationGroup = nullptr; +} + inline QString questionForFeature(QWebEnginePage::Feature feature) { switch (feature) { @@ -204,6 +212,49 @@ void WebView::contextMenuEvent(QContextMenuEvent *event) } else { (*inspectElement)->setText(tr("Inspect element")); } + + // add conext menu for image policy + QMenu *editImageAnimation = new QMenu(tr("Image animation policy")); + + m_imageAnimationGroup = new QActionGroup(editImageAnimation); + m_imageAnimationGroup->setExclusive(true); + + QAction *disableImageAnimation = + editImageAnimation->addAction(tr("Disable all image animation")); + disableImageAnimation->setCheckable(true); + m_imageAnimationGroup->addAction(disableImageAnimation); + connect(disableImageAnimation, &QAction::triggered, [this]() { + handleImageAnimationPolicyChange(QWebEngineSettings::DisallowImageAnimation); + }); + QAction *allowImageAnimationOnce = + editImageAnimation->addAction(tr("Allow animated images, but only once")); + allowImageAnimationOnce->setCheckable(true); + m_imageAnimationGroup->addAction(allowImageAnimationOnce); + connect(allowImageAnimationOnce, &QAction::triggered, + [this]() { handleImageAnimationPolicyChange(QWebEngineSettings::AnimateImageOnce); }); + QAction *allowImageAnimation = editImageAnimation->addAction(tr("Allow all animated images")); + allowImageAnimation->setCheckable(true); + m_imageAnimationGroup->addAction(allowImageAnimation); + connect(allowImageAnimation, &QAction::triggered, [this]() { + handleImageAnimationPolicyChange(QWebEngineSettings::AllowImageAnimation); + }); + + switch (page()->settings()->imageAnimationPolicy()) { + case QWebEngineSettings::AllowImageAnimation: + allowImageAnimation->setChecked(true); + break; + case QWebEngineSettings::AnimateImageOnce: + allowImageAnimationOnce->setChecked(true); + break; + case QWebEngineSettings::DisallowImageAnimation: + disableImageAnimation->setChecked(true); + break; + default: + allowImageAnimation->setChecked(true); + break; + } + + menu->addMenu(editImageAnimation); menu->popup(event->globalPos()); } @@ -365,4 +416,12 @@ void WebView::handleFileSystemAccessRequested(QWebEngineFileSystemAccessRequest else request.reject(); } + +void WebView::handleImageAnimationPolicyChange(QWebEngineSettings::ImageAnimationPolicy policy) +{ + if (!page()) + return; + + page()->settings()->setImageAnimationPolicy(policy); +} #endif // QT_VERSION >= QT_VERSION_CHECK(6, 4, 0) diff --git a/examples/webenginewidgets/simplebrowser/webview.h b/examples/webenginewidgets/simplebrowser/webview.h index 872950551..c7e7f394c 100644 --- a/examples/webenginewidgets/simplebrowser/webview.h +++ b/examples/webenginewidgets/simplebrowser/webview.h @@ -13,6 +13,8 @@ #include <QWebEnginePage> #include <QWebEngineRegisterProtocolHandlerRequest> #include <QWebEngineWebAuthUxRequest> +#include <QWebEngineSettings> +#include <QActionGroup> class WebPage; class WebAuthDialog; @@ -23,6 +25,7 @@ class WebView : public QWebEngineView public: explicit WebView(QWidget *parent = nullptr); + ~WebView(); void setPage(WebPage *page); int loadProgress() const; @@ -49,6 +52,7 @@ private slots: void handleFileSystemAccessRequested(QWebEngineFileSystemAccessRequest request); void handleWebAuthUxRequested(QWebEngineWebAuthUxRequest *request); #endif + void handleImageAnimationPolicyChange(QWebEngineSettings::ImageAnimationPolicy policy); private: void createWebActionTrigger(QWebEnginePage *page, QWebEnginePage::WebAction); @@ -57,6 +61,7 @@ private: private: int m_loadProgress = 100; WebAuthDialog *m_authDialog = nullptr; + QActionGroup *m_imageAnimationGroup = nullptr; }; #endif |