diff options
author | Anu Aliyas <anu.aliyas@qt.io> | 2023-12-06 14:04:24 +0100 |
---|---|---|
committer | Anu Aliyas <anu.aliyas@qt.io> | 2024-01-06 13:13:28 +0100 |
commit | a25d6fb7da7287dfe6c9d86e917013ea262a9ac1 (patch) | |
tree | 4c7997a75f5567b379feb323e0dad0367293a0ad | |
parent | 285dfce3c0f8e61228784ef557844c66d44feb1f (diff) |
Add default styled icons to actions
- Added a default icon to action using the newly introduced QWebEngineViewPrivate::webActionIcon()
Fixes: QTBUG-119722
Pick-to: 6.6 6.7
Change-Id: I4ee9b4380ead80d991756147bfef40f0f17c0849
Reviewed-by: Michal Klocek <michal.klocek@qt.io>
-rw-r--r-- | src/core/doc/src/qwebenginepage_lgpl.qdoc | 3 | ||||
-rw-r--r-- | src/webenginewidgets/api/qwebengineview.cpp | 65 | ||||
-rw-r--r-- | src/webenginewidgets/api/qwebengineview_p.h | 2 | ||||
-rw-r--r-- | src/webenginewidgets/doc/src/qwebengineview_lgpl.qdoc | 1 |
4 files changed, 42 insertions, 29 deletions
diff --git a/src/core/doc/src/qwebenginepage_lgpl.qdoc b/src/core/doc/src/qwebenginepage_lgpl.qdoc index dcf426225..f82f33e6f 100644 --- a/src/core/doc/src/qwebenginepage_lgpl.qdoc +++ b/src/core/doc/src/qwebenginepage_lgpl.qdoc @@ -452,6 +452,9 @@ The action is owned by the QWebEnginePage but you can customize the look by changing its properties. + \l{QWebEnginePage::action(WebAction action)} does not have a default styled icon. + Use \l{QWebEngineView::pageAction()} to have an action with a default styled icon. + QWebEnginePage also takes care of implementing the action, so that upon triggering the corresponding action is performed on the page. diff --git a/src/webenginewidgets/api/qwebengineview.cpp b/src/webenginewidgets/api/qwebengineview.cpp index 65474506c..952ebe7cd 100644 --- a/src/webenginewidgets/api/qwebengineview.cpp +++ b/src/webenginewidgets/api/qwebengineview.cpp @@ -747,9 +747,9 @@ void QWebEngineViewPrivate::bindPageAndWidget(QWebEnginePagePrivate *pagePrivate } } -QIcon QWebEngineViewPrivate::webActionIcon(QWebEnginePage::WebAction action) +QIcon QWebEngineViewPrivate::webActionIcon(QWebEnginePage::WebAction action) const { - Q_Q(QWebEngineView); + Q_Q(const QWebEngineView); QIcon icon; QStyle *style = q->style(); @@ -1121,7 +1121,16 @@ QString QWebEngineView::selectedText() const #if QT_CONFIG(action) QAction* QWebEngineView::pageAction(QWebEnginePage::WebAction action) const { - return page()->action(action); + Q_D(const QWebEngineView); + QAction *pageAction = page()->action(action); + + if (pageAction->icon().isNull()) { + auto icon = d->webActionIcon(action); + if (!icon.isNull()) + pageAction->setIcon(icon); + } + + return pageAction; } #endif @@ -1479,79 +1488,79 @@ void QContextMenuBuilder::addMenuItem(ContextMenuItem menuItem) switch (menuItem) { case ContextMenuItem::Back: - action = thisRef->action(QWebEnginePage::Back); + action = m_view->pageAction(QWebEnginePage::Back); break; case ContextMenuItem::Forward: - action = thisRef->action(QWebEnginePage::Forward); + action = m_view->pageAction(QWebEnginePage::Forward); break; case ContextMenuItem::Reload: - action = thisRef->action(QWebEnginePage::Reload); + action = m_view->pageAction(QWebEnginePage::Reload); break; case ContextMenuItem::Cut: - action = thisRef->action(QWebEnginePage::Cut); + action = m_view->pageAction(QWebEnginePage::Cut); break; case ContextMenuItem::Copy: - action = thisRef->action(QWebEnginePage::Copy); + action = m_view->pageAction(QWebEnginePage::Copy); break; case ContextMenuItem::Paste: - action = thisRef->action(QWebEnginePage::Paste); + action = m_view->pageAction(QWebEnginePage::Paste); break; case ContextMenuItem::Undo: - action = thisRef->action(QWebEnginePage::Undo); + action = m_view->pageAction(QWebEnginePage::Undo); break; case ContextMenuItem::Redo: - action = thisRef->action(QWebEnginePage::Redo); + action = m_view->pageAction(QWebEnginePage::Redo); break; case ContextMenuItem::SelectAll: - action = thisRef->action(QWebEnginePage::SelectAll); + action = m_view->pageAction(QWebEnginePage::SelectAll); break; case ContextMenuItem::PasteAndMatchStyle: - action = thisRef->action(QWebEnginePage::PasteAndMatchStyle); + action = m_view->pageAction(QWebEnginePage::PasteAndMatchStyle); break; case ContextMenuItem::OpenLinkInNewWindow: - action = thisRef->action(QWebEnginePage::OpenLinkInNewWindow); + action = m_view->pageAction(QWebEnginePage::OpenLinkInNewWindow); break; case ContextMenuItem::OpenLinkInNewTab: - action = thisRef->action(QWebEnginePage::OpenLinkInNewTab); + action = m_view->pageAction(QWebEnginePage::OpenLinkInNewTab); break; case ContextMenuItem::CopyLinkToClipboard: - action = thisRef->action(QWebEnginePage::CopyLinkToClipboard); + action = m_view->pageAction(QWebEnginePage::CopyLinkToClipboard); break; case ContextMenuItem::DownloadLinkToDisk: - action = thisRef->action(QWebEnginePage::DownloadLinkToDisk); + action = m_view->pageAction(QWebEnginePage::DownloadLinkToDisk); break; case ContextMenuItem::CopyImageToClipboard: - action = thisRef->action(QWebEnginePage::CopyImageToClipboard); + action = m_view->pageAction(QWebEnginePage::CopyImageToClipboard); break; case ContextMenuItem::CopyImageUrlToClipboard: - action = thisRef->action(QWebEnginePage::CopyImageUrlToClipboard); + action = m_view->pageAction(QWebEnginePage::CopyImageUrlToClipboard); break; case ContextMenuItem::DownloadImageToDisk: - action = thisRef->action(QWebEnginePage::DownloadImageToDisk); + action = m_view->pageAction(QWebEnginePage::DownloadImageToDisk); break; case ContextMenuItem::CopyMediaUrlToClipboard: - action = thisRef->action(QWebEnginePage::CopyMediaUrlToClipboard); + action = m_view->pageAction(QWebEnginePage::CopyMediaUrlToClipboard); break; case ContextMenuItem::ToggleMediaControls: - action = thisRef->action(QWebEnginePage::ToggleMediaControls); + action = m_view->pageAction(QWebEnginePage::ToggleMediaControls); break; case ContextMenuItem::ToggleMediaLoop: - action = thisRef->action(QWebEnginePage::ToggleMediaLoop); + action = m_view->pageAction(QWebEnginePage::ToggleMediaLoop); break; case ContextMenuItem::DownloadMediaToDisk: - action = thisRef->action(QWebEnginePage::DownloadMediaToDisk); + action = m_view->pageAction(QWebEnginePage::DownloadMediaToDisk); break; case ContextMenuItem::InspectElement: - action = thisRef->action(QWebEnginePage::InspectElement); + action = m_view->pageAction(QWebEnginePage::InspectElement); break; case ContextMenuItem::ExitFullScreen: - action = thisRef->action(QWebEnginePage::ExitFullScreen); + action = m_view->pageAction(QWebEnginePage::ExitFullScreen); break; case ContextMenuItem::SavePage: - action = thisRef->action(QWebEnginePage::SavePage); + action = m_view->pageAction(QWebEnginePage::SavePage); break; case ContextMenuItem::ViewSource: - action = thisRef->action(QWebEnginePage::ViewSource); + action = m_view->pageAction(QWebEnginePage::ViewSource); break; case ContextMenuItem::SpellingSuggestions: for (int i = 0; i < m_contextData->spellCheckerSuggestions().size() && i < 4; i++) { diff --git a/src/webenginewidgets/api/qwebengineview_p.h b/src/webenginewidgets/api/qwebengineview_p.h index 43cc6fe81..aa330ac23 100644 --- a/src/webenginewidgets/api/qwebengineview_p.h +++ b/src/webenginewidgets/api/qwebengineview_p.h @@ -87,7 +87,7 @@ public: static void bindPageAndView(QWebEnginePage *page, QWebEngineView *view); static void bindPageAndWidget(QWebEnginePagePrivate *pagePrivate, QtWebEngineCore::WebEngineQuickWidget *widget); - QIcon webActionIcon(QWebEnginePage::WebAction action); + QIcon webActionIcon(QWebEnginePage::WebAction action) const; void unhandledKeyEvent(QKeyEvent *event) override; void focusContainer() override; bool passOnFocus(bool reverse) override; diff --git a/src/webenginewidgets/doc/src/qwebengineview_lgpl.qdoc b/src/webenginewidgets/doc/src/qwebengineview_lgpl.qdoc index 9b8ee29eb..03489640a 100644 --- a/src/webenginewidgets/doc/src/qwebengineview_lgpl.qdoc +++ b/src/webenginewidgets/doc/src/qwebengineview_lgpl.qdoc @@ -210,6 +210,7 @@ /*! \fn QAction *QWebEngineView::pageAction(QWebEnginePage::WebAction action) const Returns a pointer to a QAction that encapsulates the specified web action \a action. + This function will also set a default styled icon to the QAction if it lacks one. */ /*! |