summaryrefslogtreecommitdiffstats
path: root/src/webengine
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@qt.io>2018-02-08 17:31:44 +0100
committerAllan Sandfeld Jensen <allan.jensen@qt.io>2018-03-15 16:52:27 +0000
commit243a2fef90dc3ac846a36738bfe97efba3050dc9 (patch)
tree9a68163527c2795f4c3ef0b11db10cc1a19f6915 /src/webengine
parent6b35497375c07c49cca7317a4452acc6adc7a1cd (diff)
Adaptations to form validation
Form validations messages has moved entirely to being done by Blink. Change-Id: I6742c111fc59f0baba75b8b37f5d0ec9ae2fb920 Reviewed-by: Peter Varga <pvarga@inf.u-szeged.hu> Reviewed-by: Michael BrĂ¼ning <michael.bruning@qt.io>
Diffstat (limited to 'src/webengine')
-rw-r--r--src/webengine/api/qquickwebenginedialogrequests.cpp33
-rw-r--r--src/webengine/api/qquickwebengineview.cpp44
-rw-r--r--src/webengine/api/qquickwebengineview_p_p.h4
-rw-r--r--src/webengine/doc/src/webengineview_lgpl.qdoc9
-rw-r--r--src/webengine/ui/MessageBubble.qml150
-rw-r--r--src/webengine/ui/ui.pro2
-rw-r--r--src/webengine/ui_delegates_manager.cpp34
-rw-r--r--src/webengine/ui_delegates_manager.h6
8 files changed, 4 insertions, 278 deletions
diff --git a/src/webengine/api/qquickwebenginedialogrequests.cpp b/src/webengine/api/qquickwebenginedialogrequests.cpp
index c57f4c76f..b1f52a6b1 100644
--- a/src/webengine/api/qquickwebenginedialogrequests.cpp
+++ b/src/webengine/api/qquickwebenginedialogrequests.cpp
@@ -716,40 +716,11 @@ void QQuickWebEngineFileDialogRequest::dialogReject()
\instantiates QQuickWebEngineFormValidationMessageRequest
\inqmlmodule QtWebEngine
\since QtWebEngine 1.4
+ \obsolete
\brief A request for showing a HTML5 form validation message to the user.
- A FormValidationMessageRequest is passed as an argument of the
- WebEngineView::formValidationMessageRequested signal. It is generated when
- the handling of the validation message is requested.
-
- The \l accepted property of the request indicates whether the request
- is handled by the user code or the default message should be displayed.
-
- The following code uses a custom message to handle the request:
-
- \code
- WebEngineView {
- // ...
- onFormValidationMessageRequested: function(request) {
- request.accepted = true;
- switch (request.type) {
- case FormValidationMessageRequest.Show:
- validationMessage.text = request.text;
- validationMessage.x = request.x;
- validationMessage.y = request.y
- validationMessage.visible = true;
- break;
- case FormValidationMessageRequest.Move:
- break;
- case FormValidationMessageRequest.Hide:
- validationMessage.visible = false;
- break;
- }
- }
- // ...
- }
- \endcode
+ No longer used since 5.11, as Blink now renders Validation messages internally.
*/
QQuickWebEngineFormValidationMessageRequest::QQuickWebEngineFormValidationMessageRequest(
diff --git a/src/webengine/api/qquickwebengineview.cpp b/src/webengine/api/qquickwebengineview.cpp
index 5e11a1c04..2fe146d4c 100644
--- a/src/webengine/api/qquickwebengineview.cpp
+++ b/src/webengine/api/qquickwebengineview.cpp
@@ -116,7 +116,6 @@ QQuickWebEngineViewPrivate::QQuickWebEngineViewPrivate()
, m_fullscreenMode(false)
, isLoading(false)
, m_activeFocusOnPress(true)
- , m_validationShowing(false)
, devicePixelRatio(QGuiApplication::primaryScreen()->devicePixelRatio())
, m_webChannel(0)
, m_webChannelWorld(0)
@@ -995,49 +994,6 @@ void QQuickWebEngineViewPrivate::didPrintPageToPdf(const QString &filePath, bool
Q_EMIT q->pdfPrintingFinished(filePath, success);
}
-void QQuickWebEngineViewPrivate::showValidationMessage(const QRect &anchor, const QString &mainText, const QString &subText)
-{
- Q_Q(QQuickWebEngineView);
- QQuickWebEngineFormValidationMessageRequest *request;
- request = new QQuickWebEngineFormValidationMessageRequest(QQuickWebEngineFormValidationMessageRequest::Show,
- anchor,mainText,subText);
- m_validationShowing = true;
- // mark the object for gc by creating temporary jsvalue
- qmlEngine(q)->newQObject(request);
- Q_EMIT q->formValidationMessageRequested(request);
- if (!request->isAccepted())
- ui()->showMessageBubble(anchor, mainText, subText);
-}
-
-void QQuickWebEngineViewPrivate::hideValidationMessage()
-{
- Q_Q(QQuickWebEngineView);
- // Suppress the initial hide message before any show messages (Since 61-based)
- if (!m_validationShowing)
- return;
- QQuickWebEngineFormValidationMessageRequest *request;
- request = new QQuickWebEngineFormValidationMessageRequest(QQuickWebEngineFormValidationMessageRequest::Hide);
- m_validationShowing = false;
- // mark the object for gc by creating temporary jsvalue
- qmlEngine(q)->newQObject(request);
- Q_EMIT q->formValidationMessageRequested(request);
- if (!request->isAccepted())
- ui()->hideMessageBubble();
-}
-
-void QQuickWebEngineViewPrivate::moveValidationMessage(const QRect &anchor)
-{
- Q_Q(QQuickWebEngineView);
- QQuickWebEngineFormValidationMessageRequest *request;
- request = new QQuickWebEngineFormValidationMessageRequest(QQuickWebEngineFormValidationMessageRequest::Move,
- anchor);
- // mark the object for gc by creating temporary jsvalue
- qmlEngine(q)->newQObject(request);
- Q_EMIT q->formValidationMessageRequested(request);
- if (!request->isAccepted())
- ui()->moveMessageBubble(anchor);
-}
-
void QQuickWebEngineViewPrivate::updateScrollPosition(const QPointF &position)
{
Q_Q(QQuickWebEngineView);
diff --git a/src/webengine/api/qquickwebengineview_p_p.h b/src/webengine/api/qquickwebengineview_p_p.h
index 19cdffdea..4b8617749 100644
--- a/src/webengine/api/qquickwebengineview_p_p.h
+++ b/src/webengine/api/qquickwebengineview_p_p.h
@@ -137,9 +137,6 @@ public:
QtWebEngineCore::WebEngineSettings *webEngineSettings() const override;
void allowCertificateError(const QSharedPointer<CertificateErrorController> &errorController) override;
void runGeolocationPermissionRequest(QUrl const&) override;
- void showValidationMessage(const QRect &anchor, const QString &mainText, const QString &subText) override;
- void hideValidationMessage() override;
- void moveValidationMessage(const QRect &anchor) override;
void renderProcessTerminated(RenderProcessTerminationStatus terminationStatus, int exitCode) override;
void requestGeometryChange(const QRect &geometry, const QRect &frameGeometry) override;
void updateScrollPosition(const QPointF &position) override;
@@ -181,7 +178,6 @@ public:
bool isLoading;
bool m_activeFocusOnPress;
bool m_navigationActionTriggered;
- bool m_validationShowing;
qreal devicePixelRatio;
QMap<quint64, QJSValue> m_callbacks;
QList<QSharedPointer<CertificateErrorController> > m_certificateErrorControllers;
diff --git a/src/webengine/doc/src/webengineview_lgpl.qdoc b/src/webengine/doc/src/webengineview_lgpl.qdoc
index 761eb2a2c..1621d0821 100644
--- a/src/webengine/doc/src/webengineview_lgpl.qdoc
+++ b/src/webengine/doc/src/webengineview_lgpl.qdoc
@@ -1271,14 +1271,9 @@
/*!
\qmlsignal WebEngineView::formValidationMessageRequested(FormValidationMessageRequest request)
\since QtWebEngine 1.4
+ \obsolete
- This signal is emitted when a validation message is requested.
-
- The request can be handled by using the methods of the FormValidationMessageRequest
- type.
-
- \note Signal handlers need to call \c{request.accepted = true} to prevent a
- default dialog from showing up.
+ No longer used since 5.11, as Blink now renders Validation messages internally.
*/
/*!
diff --git a/src/webengine/ui/MessageBubble.qml b/src/webengine/ui/MessageBubble.qml
deleted file mode 100644
index 056aac1fe..000000000
--- a/src/webengine/ui/MessageBubble.qml
+++ /dev/null
@@ -1,150 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtWebEngine module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-import QtQuick 2.5
-
-Item {
- id: bubble
-
- width: 1
- height: 1
-
- property int maxWidth: 0
- property string mainText: ""
- property string subText: ""
-
- property int border: 1
-
- property int arrowWidth: 18
- property int arrowHeight: 18
- property int arrowOffset: 18
-
- property int marginLeft: border + 8
- property int marginTop: border + arrowHeight + 6
- property int marginRight: border + 8
- property int marginBottom: border + 6
-
- Column {
- id: messageColumn
-
- x: bubble.marginLeft
- y: bubble.marginTop
- z: 1
-
- spacing: 5
-
- Text {
- id: message
- width: bubble.maxWidth
-
- wrapMode: Text.WordWrap
- elide: Text.ElideNone
- clip: true
-
- font.pointSize: subMessage.font.pointSize + 4
-
- text: bubble.mainText
- }
-
- Text {
- id: subMessage
- width: bubble.maxWidth
-
- wrapMode: Text.WordWrap
- elide: Text.ElideNone
- clip: true
-
- text: bubble.subText
- }
- }
-
- Canvas {
- id: bubbleCanvas
-
- property int textWidth: Math.min(bubble.maxWidth, Math.max(message.paintedWidth, subMessage.paintedWidth))
- property int textHeight: message.paintedHeight + (subMessage.paintedWidth > 0 ? (messageColumn.spacing + subMessage.paintedHeight) : 0)
-
- width: textWidth + bubble.marginLeft + bubble.marginRight
- height: textHeight + bubble.marginTop + bubble.marginBottom
-
- property int cornerRadius: 7
-
- property int messageBoxLeft: 0
- property int messageBoxTop: bubble.arrowHeight
- property int messageBoxRight: width - border
- property int messageBoxBottom: height - border
-
- onPaint: {
- var ctx = getContext("2d");
-
- ctx.lineWidth = bubble.border;
- ctx.strokeStyle = "#555";
- ctx.fillStyle = "#ffffe1";
-
- ctx.beginPath();
-
- ctx.moveTo(messageBoxLeft + cornerRadius, messageBoxTop);
-
- // Arrow
- ctx.lineTo(messageBoxLeft + bubble.arrowOffset, messageBoxTop);
- ctx.lineTo(messageBoxLeft + bubble.arrowOffset, messageBoxTop - bubble.arrowHeight);
- ctx.lineTo(messageBoxLeft + bubble.arrowOffset + bubble.arrowWidth, messageBoxTop);
-
- // Message Box
- ctx.lineTo(messageBoxRight - cornerRadius, messageBoxTop);
- ctx.quadraticCurveTo(messageBoxRight, messageBoxTop, messageBoxRight, messageBoxTop + cornerRadius);
- ctx.lineTo(messageBoxRight, messageBoxBottom - cornerRadius);
- ctx.quadraticCurveTo(messageBoxRight, messageBoxBottom, messageBoxRight - cornerRadius, messageBoxBottom);
- ctx.lineTo(messageBoxLeft + cornerRadius, messageBoxBottom);
- ctx.quadraticCurveTo(messageBoxLeft, messageBoxBottom, messageBoxLeft, messageBoxBottom - cornerRadius);
- ctx.lineTo(messageBoxLeft, messageBoxTop + cornerRadius);
- ctx.quadraticCurveTo(messageBoxLeft, messageBoxTop, messageBoxLeft + cornerRadius, messageBoxTop);
-
- ctx.closePath();
-
- ctx.fill();
- ctx.stroke();
- }
-
- onPainted: {
- bubble.width = bubbleCanvas.width;
- bubble.height = bubbleCanvas.height;
- }
- }
-}
diff --git a/src/webengine/ui/ui.pro b/src/webengine/ui/ui.pro
index bce03cc0c..eb6bf435c 100644
--- a/src/webengine/ui/ui.pro
+++ b/src/webengine/ui/ui.pro
@@ -13,8 +13,6 @@ QML_FILES += \
Menu.qml \
MenuItem.qml \
MenuSeparator.qml \
- # Message Bubble
- MessageBubble.qml \
ToolTip.qml
load(qml_module)
diff --git a/src/webengine/ui_delegates_manager.cpp b/src/webengine/ui_delegates_manager.cpp
index 046affbf4..12474a1f1 100644
--- a/src/webengine/ui_delegates_manager.cpp
+++ b/src/webengine/ui_delegates_manager.cpp
@@ -129,7 +129,6 @@ MenuItemHandler::MenuItemHandler(QObject *parent)
UIDelegatesManager::UIDelegatesManager(QQuickWebEngineView *view)
: m_view(view)
- , m_messageBubbleItem(0)
, m_toolTip(nullptr)
FOR_EACH_COMPONENT_TYPE(COMPONENT_MEMBER_INIT, NO_SEPARATOR)
{
@@ -535,39 +534,6 @@ void UIDelegatesManager::showMenu(QObject *menu)
QMetaObject::invokeMethod(menu, "popup");
}
-void UIDelegatesManager::showMessageBubble(const QRect &anchor, const QString &mainText, const QString &subText)
-{
- if (!ensureComponentLoaded(MessageBubble))
- return;
-
- Q_ASSERT(m_messageBubbleItem.isNull());
-
- QQmlContext *context = qmlContext(m_view);
- m_messageBubbleItem.reset(qobject_cast<QQuickItem *>(messageBubbleComponent->beginCreate(context)));
- m_messageBubbleItem->setParentItem(m_view);
- messageBubbleComponent->completeCreate();
-
- QQmlProperty(m_messageBubbleItem.data(), QStringLiteral("maxWidth")).write(anchor.size().width());
- QQmlProperty(m_messageBubbleItem.data(), QStringLiteral("mainText")).write(mainText);
- QQmlProperty(m_messageBubbleItem.data(), QStringLiteral("subText")).write(subText);
- QQmlProperty(m_messageBubbleItem.data(), QStringLiteral("x")).write(anchor.x());
- QQmlProperty(m_messageBubbleItem.data(), QStringLiteral("y")).write(anchor.y() + anchor.size().height());
-}
-
-void UIDelegatesManager::hideMessageBubble()
-{
- m_messageBubbleItem.reset();
-}
-
-void UIDelegatesManager::moveMessageBubble(const QRect &anchor)
-{
- if (m_messageBubbleItem.isNull())
- return;
-
- QQmlProperty(m_messageBubbleItem.data(), QStringLiteral("x")).write(anchor.x());
- QQmlProperty(m_messageBubbleItem.data(), QStringLiteral("y")).write(anchor.y() + anchor.size().height());
-}
-
void UIDelegatesManager::showToolTip(const QString &text)
{
if (!ensureComponentLoaded(ToolTip))
diff --git a/src/webengine/ui_delegates_manager.h b/src/webengine/ui_delegates_manager.h
index 54ecf0986..1cbf2ad28 100644
--- a/src/webengine/ui_delegates_manager.h
+++ b/src/webengine/ui_delegates_manager.h
@@ -58,7 +58,6 @@
F(ConfirmDialog, confirmDialog) SEPARATOR \
F(PromptDialog, promptDialog) SEPARATOR \
F(FilePicker, filePicker) SEPARATOR \
- F(MessageBubble, messageBubble) SEPARATOR \
F(AuthenticationDialog, authenticationDialog) SEPARATOR \
F(ToolTip, toolTip) SEPARATOR \
@@ -120,17 +119,12 @@ public:
void showDialog(QSharedPointer<AuthenticationDialogController>);
void showFilePicker(QSharedPointer<FilePickerController>);
virtual void showMenu(QObject *menu);
- void showMessageBubble(const QRect &anchor, const QString &mainText,
- const QString &subText);
- void hideMessageBubble();
- void moveMessageBubble(const QRect &anchor);
void showToolTip(const QString &text);
protected:
bool ensureComponentLoaded(ComponentType);
QQuickWebEngineView *m_view;
- QScopedPointer<QQuickItem> m_messageBubbleItem;
QScopedPointer<QObject> m_toolTip;
QStringList m_importDirs;