summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/core/web_contents_adapter_client.h18
-rw-r--r--src/core/web_contents_view_qt.cpp2
-rw-r--r--src/webengine/api/qquickwebengineview.cpp26
-rw-r--r--src/webenginewidgets/api/qwebenginepage.cpp26
4 files changed, 58 insertions, 14 deletions
diff --git a/src/core/web_contents_adapter_client.h b/src/core/web_contents_adapter_client.h
index 4bdb55b4c..75fb112c6 100644
--- a/src/core/web_contents_adapter_client.h
+++ b/src/core/web_contents_adapter_client.h
@@ -125,7 +125,9 @@ public:
QUrl linkUrl;
QUrl unfilteredLinkUrl;
QUrl mediaUrl;
+ QString altText;
QString linkText;
+ QString titleText;
QString selectedText;
QString suggestedFileName;
QString misspelledWord;
@@ -215,6 +217,14 @@ public:
return d->unfilteredLinkUrl;
}
+ void setAltText(const QString &text) {
+ d->altText = text;
+ }
+
+ QString altText() const {
+ return d->altText;
+ }
+
void setLinkText(const QString &text) {
d->linkText = text;
}
@@ -223,6 +233,14 @@ public:
return d->linkText;
}
+ void setTitleText(const QString &text) {
+ d->titleText = text;
+ }
+
+ QString titleText() const {
+ return d->titleText;
+ }
+
void setSelectedText(const QString &text) {
d->selectedText = text;
}
diff --git a/src/core/web_contents_view_qt.cpp b/src/core/web_contents_view_qt.cpp
index ef7c09665..e50835f74 100644
--- a/src/core/web_contents_view_qt.cpp
+++ b/src/core/web_contents_view_qt.cpp
@@ -195,6 +195,8 @@ static inline WebEngineContextMenuData fromParams(const content::ContextMenuPara
ret.setPosition(QPoint(params.x, params.y));
ret.setLinkUrl(toQt(params.link_url));
ret.setLinkText(toQt(params.link_text.data()));
+ ret.setAltText(toQt(params.alt_text.data()));
+ ret.setTitleText(toQt(params.title_text.data()));
ret.setUnfilteredLinkUrl(toQt(params.unfiltered_link_url));
ret.setSelectedText(toQt(params.selection_text.data()));
ret.setMediaUrl(toQt(params.src_url));
diff --git a/src/webengine/api/qquickwebengineview.cpp b/src/webengine/api/qquickwebengineview.cpp
index 8a1a3c516..b05bbfdbc 100644
--- a/src/webengine/api/qquickwebengineview.cpp
+++ b/src/webengine/api/qquickwebengineview.cpp
@@ -1766,10 +1766,14 @@ void QQuickWebEngineView::triggerWebAction(WebAction action)
case CopyLinkToClipboard:
if (!d->m_contextMenuData.unfilteredLinkUrl().isEmpty()) {
QString urlString = d->m_contextMenuData.unfilteredLinkUrl().toString(QUrl::FullyEncoded);
- QString title = d->m_contextMenuData.linkText().toHtmlEscaped();
+ QString linkText = d->m_contextMenuData.linkText().toHtmlEscaped();
+ QString title = d->m_contextMenuData.titleText();
+ if (!title.isEmpty())
+ title = QStringLiteral(" title=\"%1\"").arg(title.toHtmlEscaped());
QMimeData *data = new QMimeData();
data->setText(urlString);
- QString html = QStringLiteral("<a href=\"") + urlString + QStringLiteral("\">") + title + QStringLiteral("</a>");
+ QString html = QStringLiteral("<a href=\"") + urlString + QStringLiteral("\"") + title + QStringLiteral(">")
+ + linkText + QStringLiteral("</a>");
data->setHtml(html);
data->setUrls(QList<QUrl>() << d->m_contextMenuData.unfilteredLinkUrl());
qApp->clipboard()->setMimeData(data);
@@ -1791,12 +1795,15 @@ void QQuickWebEngineView::triggerWebAction(WebAction action)
case CopyImageUrlToClipboard:
if (d->m_contextMenuData.mediaUrl().isValid() && d->m_contextMenuData.mediaType() == WebEngineContextMenuData::MediaTypeImage) {
QString urlString = d->m_contextMenuData.mediaUrl().toString(QUrl::FullyEncoded);
- QString title = d->m_contextMenuData.linkText();
+ QString alt = d->m_contextMenuData.altText();
+ if (!alt.isEmpty())
+ alt = QStringLiteral(" alt=\"%1\"").arg(alt.toHtmlEscaped());
+ QString title = d->m_contextMenuData.titleText();
if (!title.isEmpty())
- title = QStringLiteral(" alt=\"%1\"").arg(title.toHtmlEscaped());
+ title = QStringLiteral(" title=\"%1\"").arg(title.toHtmlEscaped());
QMimeData *data = new QMimeData();
data->setText(urlString);
- QString html = QStringLiteral("<img src=\"") + urlString + QStringLiteral("\"") + title + QStringLiteral("></img>");
+ QString html = QStringLiteral("<img src=\"") + urlString + QStringLiteral("\"") + title + alt + QStringLiteral("></img>");
data->setHtml(html);
data->setUrls(QList<QUrl>() << d->m_contextMenuData.mediaUrl());
qApp->clipboard()->setMimeData(data);
@@ -1814,12 +1821,17 @@ void QQuickWebEngineView::triggerWebAction(WebAction action)
d->m_contextMenuData.mediaType() == WebEngineContextMenuData::MediaTypeVideo))
{
QString urlString = d->m_contextMenuData.mediaUrl().toString(QUrl::FullyEncoded);
+ QString title = d->m_contextMenuData.titleText();
+ if (!title.isEmpty())
+ title = QStringLiteral(" title=\"%1\"").arg(title.toHtmlEscaped());
QMimeData *data = new QMimeData();
data->setText(urlString);
if (d->m_contextMenuData.mediaType() == WebEngineContextMenuData::MediaTypeAudio)
- data->setHtml(QStringLiteral("<audio src=\"") + urlString + QStringLiteral("\"></audio>"));
+ data->setHtml(QStringLiteral("<audio src=\"") + urlString + QStringLiteral("\"") + title +
+ QStringLiteral("></audio>"));
else
- data->setHtml(QStringLiteral("<video src=\"") + urlString + QStringLiteral("\"></video>"));
+ data->setHtml(QStringLiteral("<video src=\"") + urlString + QStringLiteral("\"") + title +
+ QStringLiteral("></video>"));
data->setUrls(QList<QUrl>() << d->m_contextMenuData.mediaUrl());
qApp->clipboard()->setMimeData(data);
}
diff --git a/src/webenginewidgets/api/qwebenginepage.cpp b/src/webenginewidgets/api/qwebenginepage.cpp
index 1a8eae0b9..958238c9d 100644
--- a/src/webenginewidgets/api/qwebenginepage.cpp
+++ b/src/webenginewidgets/api/qwebenginepage.cpp
@@ -1426,10 +1426,14 @@ void QWebEnginePage::triggerAction(WebAction action, bool)
case CopyLinkToClipboard:
if (menuData && !menuData->unfilteredLinkUrl().isEmpty()) {
QString urlString = menuData->unfilteredLinkUrl().toString(QUrl::FullyEncoded);
- QString title = menuData->linkText().toHtmlEscaped();
+ QString linkText = menuData->linkText().toHtmlEscaped();
+ QString title = menuData->titleText();
+ if (!title.isEmpty())
+ title = QStringLiteral(" title=\"%1\"").arg(title.toHtmlEscaped());
QMimeData *data = new QMimeData();
data->setText(urlString);
- QString html = QStringLiteral("<a href=\"") + urlString + QStringLiteral("\">") + title + QStringLiteral("</a>");
+ QString html = QStringLiteral("<a href=\"") + urlString + QStringLiteral("\"") + title + QStringLiteral(">")
+ + linkText + QStringLiteral("</a>");
data->setHtml(html);
data->setUrls(QList<QUrl>() << menuData->unfilteredLinkUrl());
qApp->clipboard()->setMimeData(data);
@@ -1452,12 +1456,15 @@ void QWebEnginePage::triggerAction(WebAction action, bool)
case CopyImageUrlToClipboard:
if (menuData && menuData->mediaUrl().isValid() && menuData->mediaType() == WebEngineContextMenuData::MediaTypeImage) {
QString urlString = menuData->mediaUrl().toString(QUrl::FullyEncoded);
- QString title = menuData->linkText();
+ QString alt = menuData->altText();
+ if (!alt.isEmpty())
+ alt = QStringLiteral(" alt=\"%1\"").arg(alt.toHtmlEscaped());
+ QString title = menuData->titleText();
if (!title.isEmpty())
- title = QStringLiteral(" alt=\"%1\"").arg(title.toHtmlEscaped());
+ title = QStringLiteral(" title=\"%1\"").arg(title.toHtmlEscaped());
QMimeData *data = new QMimeData();
data->setText(urlString);
- QString html = QStringLiteral("<img src=\"") + urlString + QStringLiteral("\"") + title + QStringLiteral("></img>");
+ QString html = QStringLiteral("<img src=\"") + urlString + QStringLiteral("\"") + title + alt + QStringLiteral("></img>");
data->setHtml(html);
data->setUrls(QList<QUrl>() << menuData->mediaUrl());
qApp->clipboard()->setMimeData(data);
@@ -1475,12 +1482,17 @@ void QWebEnginePage::triggerAction(WebAction action, bool)
menuData->mediaType() == WebEngineContextMenuData::MediaTypeVideo))
{
QString urlString = menuData->mediaUrl().toString(QUrl::FullyEncoded);
+ QString title = menuData->titleText();
+ if (!title.isEmpty())
+ title = QStringLiteral(" title=\"%1\"").arg(title.toHtmlEscaped());
QMimeData *data = new QMimeData();
data->setText(urlString);
if (menuData->mediaType() == WebEngineContextMenuData::MediaTypeAudio)
- data->setHtml(QStringLiteral("<audio src=\"") + urlString + QStringLiteral("\"></audio>"));
+ data->setHtml(QStringLiteral("<audio src=\"") + urlString + QStringLiteral("\"") + title +
+ QStringLiteral("></audio>"));
else
- data->setHtml(QStringLiteral("<video src=\"") + urlString + QStringLiteral("\"></video>"));
+ data->setHtml(QStringLiteral("<video src=\"") + urlString + QStringLiteral("\"") + title +
+ QStringLiteral("></video>"));
data->setUrls(QList<QUrl>() << menuData->mediaUrl());
qApp->clipboard()->setMimeData(data);
}