diff options
author | Michal Klocek <michal.klocek@qt.io> | 2020-07-29 15:30:44 +0200 |
---|---|---|
committer | Michal Klocek <michal.klocek@qt.io> | 2020-08-12 15:57:59 +0200 |
commit | 0dca1220141c1aa0ce983e27f1f09425f47f062d (patch) | |
tree | 7ed5a37e17589daeda3e164042a435efc38dac89 /src/core/render_view_context_menu_qt.cpp | |
parent | c2b43bc93d81ed2e768501e680430a1df22166b6 (diff) |
Merge all webenginecontextmenudata wrappers into one class
Introduce new class qwebenginecontextmenurequest in core which merges:
* qquickwebenginecontextmenurequest
* qwebenginecontextmenudata
* implictly shared webenginecontextdata
Unfortunately new class has to be QObject, since we want to reuse it qml.
Q_GADGET can be used only as a value type, however we need to know if
request is accepted or not in qml, therefore it must be passed
as pointer. Since we use QObject now, class is no longer implicitly
shared, however we only allocate request once and reuse the object for
every new request (it is still copied in qml just to keep it aligned
with other request handlers)
[ChangleLog] QWebEngineContextMenuRequest is replacement for
QWebEngineContextMenuData
Change-Id: Ib387ec2065361a4bacc20675ca7352ab75a0e436
Reviewed-by: Michael BrĂ¼ning <michael.bruning@qt.io>
Diffstat (limited to 'src/core/render_view_context_menu_qt.cpp')
-rw-r--r-- | src/core/render_view_context_menu_qt.cpp | 45 |
1 files changed, 24 insertions, 21 deletions
diff --git a/src/core/render_view_context_menu_qt.cpp b/src/core/render_view_context_menu_qt.cpp index 8fdae498c..e5747f382 100644 --- a/src/core/render_view_context_menu_qt.cpp +++ b/src/core/render_view_context_menu_qt.cpp @@ -39,6 +39,7 @@ #include <QtCore/QCoreApplication> #include "render_view_context_menu_qt.h" +#include "qwebenginecontextmenurequest.h" namespace QtWebEngineCore { @@ -74,8 +75,8 @@ namespace QtWebEngineCore { return QCoreApplication::translate("RenderViewContextMenuQt", qUtf8Printable(names[menuItem])); } - RenderViewContextMenuQt::RenderViewContextMenuQt(const WebEngineContextMenuData &data) - : m_contextData(data) + RenderViewContextMenuQt::RenderViewContextMenuQt(QWebEngineContextMenuRequest *request) + : m_contextData(request) { } @@ -86,15 +87,17 @@ namespace QtWebEngineCore { appendSeparatorItem(); } - if (m_contextData.isEditable() && !m_contextData.spellCheckerSuggestions().isEmpty()) { + if (m_contextData->isContentEditable() + && !m_contextData->spellCheckerSuggestions().isEmpty()) { appendSpellingSuggestionItems(); appendSeparatorItem(); } - if (m_contextData.linkText().isEmpty() && !m_contextData.linkUrl().isValid() && !m_contextData.mediaUrl().isValid()) { - if (m_contextData.isEditable()) + if (m_contextData->linkText().isEmpty() && !m_contextData->filteredLinkUrl().isValid() + && !m_contextData->mediaUrl().isValid()) { + if (m_contextData->isContentEditable()) appendEditableItems(); - else if (!m_contextData.selectedText().isEmpty()) + else if (!m_contextData->selectedText().isEmpty()) appendCopyItem(); else appendPageItems(); @@ -102,27 +105,29 @@ namespace QtWebEngineCore { appendPageItems(); } - if (m_contextData.linkUrl().isValid() || !m_contextData.unfilteredLinkUrl().isEmpty() || !m_contextData.linkUrl().isEmpty()) + if (m_contextData->filteredLinkUrl().isValid() + || !m_contextData->unfilteredLinkUrl().isEmpty() + || !m_contextData->filteredLinkUrl().isEmpty()) appendLinkItems(); - if (m_contextData.mediaUrl().isValid()) { - switch (m_contextData.mediaType()) { - case WebEngineContextMenuData::MediaTypeImage: + if (m_contextData->mediaUrl().isValid()) { + switch (m_contextData->mediaType()) { + case QWebEngineContextMenuRequest::MediaTypeImage: appendSeparatorItem(); appendImageItems(); break; - case WebEngineContextMenuData::MediaTypeCanvas: + case QWebEngineContextMenuRequest::MediaTypeCanvas: Q_UNREACHABLE(); // mediaUrl is invalid for canvases break; - case WebEngineContextMenuData::MediaTypeAudio: - case WebEngineContextMenuData::MediaTypeVideo: + case QWebEngineContextMenuRequest::MediaTypeAudio: + case QWebEngineContextMenuRequest::MediaTypeVideo: appendSeparatorItem(); appendMediaItems(); break; default: break; } - } else if (m_contextData.mediaType() == WebEngineContextMenuData::MediaTypeCanvas) { + } else if (m_contextData->mediaType() == QWebEngineContextMenuRequest::MediaTypeCanvas) { appendSeparatorItem(); appendCanvasItems(); } @@ -160,7 +165,7 @@ namespace QtWebEngineCore { addMenuItem(RenderViewContextMenuQt::Cut); addMenuItem(RenderViewContextMenuQt::Copy); addMenuItem(RenderViewContextMenuQt::Paste); - if (m_contextData.misspelledWord().isEmpty()) { + if (m_contextData->misspelledWord().isEmpty()) { addMenuItem(RenderViewContextMenuQt::PasteAndMatchStyle); addMenuItem(RenderViewContextMenuQt::SelectAll); } @@ -190,7 +195,7 @@ namespace QtWebEngineCore { void RenderViewContextMenuQt::appendMediaItems() { addMenuItem(RenderViewContextMenuQt::ToggleMediaLoop); - if (m_contextData.mediaFlags() & QtWebEngineCore::WebEngineContextMenuData::MediaCanToggleControls) + if (m_contextData->mediaFlags() & QWebEngineContextMenuRequest::MediaCanToggleControls) addMenuItem(RenderViewContextMenuQt::ToggleMediaControls); addMenuItem(RenderViewContextMenuQt::DownloadMediaToDisk); addMenuItem(RenderViewContextMenuQt::CopyMediaUrlToClipboard); @@ -217,10 +222,8 @@ namespace QtWebEngineCore { bool RenderViewContextMenuQt::canViewSource() { - return m_contextData.linkText().isEmpty() - && !m_contextData.linkUrl().isValid() - && !m_contextData.mediaUrl().isValid() - && !m_contextData.isEditable() - && m_contextData.selectedText().isEmpty(); + return m_contextData->linkText().isEmpty() && !m_contextData->filteredLinkUrl().isValid() + && !m_contextData->mediaUrl().isValid() && !m_contextData->isContentEditable() + && m_contextData->selectedText().isEmpty(); } } |