From 243a2fef90dc3ac846a36738bfe97efba3050dc9 Mon Sep 17 00:00:00 2001 From: Allan Sandfeld Jensen Date: Thu, 8 Feb 2018 17:31:44 +0100 Subject: Adaptations to form validation MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Form validations messages has moved entirely to being done by Blink. Change-Id: I6742c111fc59f0baba75b8b37f5d0ec9ae2fb920 Reviewed-by: Peter Varga Reviewed-by: Michael BrĂ¼ning --- src/webenginewidgets/api/qwebenginepage.cpp | 25 --- src/webenginewidgets/api/qwebenginepage_p.h | 3 - src/webenginewidgets/api/qwebengineview.cpp | 8 - src/webenginewidgets/ui/messagebubblewidget.cpp | 225 ------------------------ src/webenginewidgets/ui/messagebubblewidget_p.h | 91 ---------- src/webenginewidgets/webenginewidgets.pro | 6 - 6 files changed, 358 deletions(-) delete mode 100644 src/webenginewidgets/ui/messagebubblewidget.cpp delete mode 100644 src/webenginewidgets/ui/messagebubblewidget_p.h (limited to 'src/webenginewidgets') diff --git a/src/webenginewidgets/api/qwebenginepage.cpp b/src/webenginewidgets/api/qwebenginepage.cpp index 0d5f83bba..30ccf26f2 100644 --- a/src/webenginewidgets/api/qwebenginepage.cpp +++ b/src/webenginewidgets/api/qwebenginepage.cpp @@ -64,10 +64,6 @@ #include "web_engine_settings.h" #include "qwebenginescript.h" -#ifdef QT_UI_DELEGATES -#include "ui/messagebubblewidget_p.h" -#endif - #include #include #include @@ -1604,27 +1600,6 @@ void QWebEnginePagePrivate::javaScriptConsoleMessage(JavaScriptConsoleMessageLev q->javaScriptConsoleMessage(static_cast(level), message, lineNumber, sourceID); } -void QWebEnginePagePrivate::showValidationMessage(const QRect &anchor, const QString &mainText, const QString &subText) -{ -#ifdef QT_UI_DELEGATES - QtWebEngineWidgetUI::MessageBubbleWidget::showBubble(view, anchor, mainText, subText); -#endif -} - -void QWebEnginePagePrivate::hideValidationMessage() -{ -#ifdef QT_UI_DELEGATES - QtWebEngineWidgetUI::MessageBubbleWidget::hideBubble(); -#endif -} - -void QWebEnginePagePrivate::moveValidationMessage(const QRect &anchor) -{ -#ifdef QT_UI_DELEGATES - QtWebEngineWidgetUI::MessageBubbleWidget::moveBubble(view, anchor); -#endif -} - void QWebEnginePagePrivate::renderProcessTerminated(RenderProcessTerminationStatus terminationStatus, int exitCode) { diff --git a/src/webenginewidgets/api/qwebenginepage_p.h b/src/webenginewidgets/api/qwebenginepage_p.h index 61092fa6a..81caaf415 100644 --- a/src/webenginewidgets/api/qwebenginepage_p.h +++ b/src/webenginewidgets/api/qwebenginepage_p.h @@ -134,9 +134,6 @@ public: QObject *accessibilityParentObject() override; QtWebEngineCore::WebEngineSettings *webEngineSettings() const override; void allowCertificateError(const QSharedPointer &controller) 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; diff --git a/src/webenginewidgets/api/qwebengineview.cpp b/src/webenginewidgets/api/qwebengineview.cpp index 7ea451fc5..27b0a6017 100644 --- a/src/webenginewidgets/api/qwebengineview.cpp +++ b/src/webenginewidgets/api/qwebengineview.cpp @@ -43,10 +43,6 @@ #include "qwebenginepage_p.h" #include "web_contents_adapter.h" -#ifdef QT_UI_DELEGATES -#include "ui/messagebubblewidget_p.h" -#endif - #include #include #include @@ -149,10 +145,6 @@ QWebEngineView::~QWebEngineView() { Q_D(QWebEngineView); QWebEngineViewPrivate::bind(0, d->page); - -#ifdef QT_UI_DELEGATES - QtWebEngineWidgetUI::MessageBubbleWidget::hideBubble(); -#endif } QWebEnginePage* QWebEngineView::page() const diff --git a/src/webenginewidgets/ui/messagebubblewidget.cpp b/src/webenginewidgets/ui/messagebubblewidget.cpp deleted file mode 100644 index 70dada0c4..000000000 --- a/src/webenginewidgets/ui/messagebubblewidget.cpp +++ /dev/null @@ -1,225 +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$ -** -****************************************************************************/ - -#include "messagebubblewidget_p.h" - -#include "api/qwebengineview.h" - -#include -#include -#include -#include -#include -#include - -namespace QtWebEngineWidgetUI { - -Q_GLOBAL_STATIC(MessageBubbleWidget, bubbleInstance) - -void MessageBubbleWidget::showBubble(QWebEngineView *view, const QRect &anchor, const QString &mainText, const QString &subText) -{ - hideBubble(); - if (mainText.isEmpty()) - return; - - bubbleInstance->createBubble(anchor.size().width(), mainText, subText); - bubbleInstance->moveToAnchor(view, anchor); -} - -void MessageBubbleWidget::hideBubble() -{ - bubbleInstance->hide(); -} - -void MessageBubbleWidget::moveBubble(QWebEngineView *view, const QRect &anchor) -{ - bubbleInstance->moveToAnchor(view, anchor); -} - -MessageBubbleWidget::MessageBubbleWidget() - : QWidget(0, Qt::ToolTip) - , m_mainLabel(new QLabel) - , m_subLabel(new QLabel) -{ - QHBoxLayout *hLayout = new QHBoxLayout; - hLayout->setAlignment(Qt::AlignTop); - hLayout->setSizeConstraint(QLayout::SetFixedSize); - hLayout->setMargin(3); - - const int iconSize = 18; - QIcon si = style()->standardIcon(QStyle::SP_MessageBoxWarning); - - if (!si.isNull()) { - QLabel *iconLabel = new QLabel(this); - iconLabel->setPixmap(si.pixmap(iconSize, iconSize)); - iconLabel->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed); - iconLabel->setMargin(2); - hLayout->addWidget(iconLabel, 0, Qt::AlignTop); - } - - QVBoxLayout *vLayout = new QVBoxLayout; - - m_mainLabel->installEventFilter(this); - m_mainLabel->setWordWrap(true); - m_mainLabel->setTextFormat(Qt::PlainText); - m_mainLabel->setAlignment(Qt::AlignTop | Qt::AlignLeft); - vLayout->addWidget(m_mainLabel.data()); - - QFont mainFont = m_mainLabel->font(); - mainFont.setPointSize(mainFont.pointSize() + 4); - m_mainLabel->setFont(mainFont); - - m_subLabel->installEventFilter(this); - m_subLabel->setWordWrap(true); - m_subLabel->setTextFormat(Qt::PlainText); - m_subLabel->setAlignment(Qt::AlignBottom | Qt::AlignLeft); - vLayout->addWidget(m_subLabel.data()); - - hLayout->addLayout(vLayout); - setLayout(hLayout); - - QPalette pal = palette(); - pal.setColor(QPalette::Window, QColor(0xff, 0xff, 0xe1)); - pal.setColor(QPalette::WindowText, Qt::black); - setPalette(pal); -} - -MessageBubbleWidget::~MessageBubbleWidget() -{ -} - -void MessageBubbleWidget::paintEvent(QPaintEvent *) -{ - QPainter painter(this); - painter.drawPixmap(rect(), m_pixmap); -} - -void MessageBubbleWidget::createBubble(const int maxWidth, const QString &mainText, const QString &subText) -{ - m_mainLabel->setText(mainText); - m_mainLabel->setMaximumWidth(maxWidth); - - m_subLabel->setText(subText); - m_subLabel->setMaximumWidth(maxWidth); - m_subLabel->setVisible(!subText.isEmpty()); - - int border = 1; - int arrowHeight = 18; - bool roundedCorners = true; - -#if defined(QT_NO_XSHAPE) && defined(Q_WS_X11) - // XShape is required for setting the mask, so we just - // draw an ugly square when its not available - arrowHeight = 0; - roundedCorners = false; -#endif - - setContentsMargins(border + 3, border + arrowHeight + 2, border + 3, border + 2); - show(); // The widget should be visible for updateGeometry() - updateGeometry(); - m_pixmap = QPixmap(sizeHint()); - - QPainterPath path = drawBoxPath(QPoint(0, arrowHeight), border, roundedCorners); - - // Draw border and set background - QPainter painter(&m_pixmap); - painter.setPen(QPen(palette().color(QPalette::Window).darker(160), border)); - painter.setBrush(palette().color(QPalette::Window)); - painter.drawPath(path); -} - -void MessageBubbleWidget::moveToAnchor(QWebEngineView *view, const QRect &anchor) -{ - QPoint topLeft = view->mapToGlobal(anchor.topLeft()); - move(topLeft.x(), topLeft.y() + anchor.height()); -} - -QPainterPath MessageBubbleWidget::drawBoxPath(const QPoint &pos, int border, bool roundedCorners) -{ - const int arrowHeight = pos.y(); - const int arrowOffset = 18; - const int arrowWidth = 18; - - const int cornerRadius = roundedCorners ? 7 : 0; - - const int messageBoxLeft = pos.x(); - const int messageBoxTop = arrowHeight; - const int messageBoxRight = m_pixmap.width() - 1; - const int messageBoxBottom = m_pixmap.height() - 1; - - QPainterPath path; - path.moveTo(messageBoxLeft + cornerRadius, messageBoxTop); - - if (arrowHeight) { - path.lineTo(messageBoxLeft + arrowOffset, messageBoxTop); - path.lineTo(messageBoxLeft + arrowOffset, messageBoxTop - arrowHeight); - path.lineTo(messageBoxLeft + arrowOffset + arrowWidth, messageBoxTop); - } - - if (roundedCorners) { - path.lineTo(messageBoxRight - cornerRadius, messageBoxTop); - path.quadTo(messageBoxRight, messageBoxTop, messageBoxRight, messageBoxTop + cornerRadius); - path.lineTo(messageBoxRight, messageBoxBottom - cornerRadius); - path.quadTo(messageBoxRight, messageBoxBottom, messageBoxRight - cornerRadius, messageBoxBottom); - path.lineTo(messageBoxLeft + cornerRadius, messageBoxBottom); - path.quadTo(messageBoxLeft, messageBoxBottom, messageBoxLeft, messageBoxBottom - cornerRadius); - path.lineTo(messageBoxLeft, messageBoxTop + cornerRadius); - path.quadTo(messageBoxLeft, messageBoxTop, messageBoxLeft + cornerRadius, messageBoxTop); - } else { - path.lineTo(messageBoxRight, messageBoxTop); - path.lineTo(messageBoxRight, messageBoxBottom); - path.lineTo(messageBoxLeft, messageBoxBottom); - path.moveTo(messageBoxLeft, messageBoxTop); - } - - // Set mask - if (arrowHeight || roundedCorners) { - QBitmap bitmap = QBitmap(sizeHint()); - bitmap.fill(Qt::color0); - QPainter painter(&bitmap); - painter.setPen(QPen(Qt::color1, border)); - painter.setBrush(QBrush(Qt::color1)); - painter.drawPath(path); - setMask(bitmap); - } - - return path; -} - -} // namespace QtWebEngineWidgetUI diff --git a/src/webenginewidgets/ui/messagebubblewidget_p.h b/src/webenginewidgets/ui/messagebubblewidget_p.h deleted file mode 100644 index 6898aea13..000000000 --- a/src/webenginewidgets/ui/messagebubblewidget_p.h +++ /dev/null @@ -1,91 +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$ -** -****************************************************************************/ - -#ifndef MESSAGEBUBBLEWIDGET_P_H -#define MESSAGEBUBBLEWIDGET_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include -#include - -QT_BEGIN_NAMESPACE -class QLabel; -class QWebEngineView; -QT_END_NAMESPACE - -namespace QtWebEngineWidgetUI { - -class MessageBubbleWidget : public QWidget -{ - Q_OBJECT -public: - MessageBubbleWidget(); - ~MessageBubbleWidget(); - - static void showBubble(QWebEngineView *view, const QRect &anchor, const QString &mainText, const QString &subText = QString()); - static void hideBubble(); - static void moveBubble(QWebEngineView *view, const QRect &anchor); - -protected: - void paintEvent(QPaintEvent *) override; - -private: - void createBubble(const int maxWidth, const QString &mainText, const QString &subText); - void moveToAnchor(QWebEngineView *view, const QRect &anchor); - - QPainterPath drawBoxPath(const QPoint &pos, int border, bool roundedCorners); - - QScopedPointer m_mainLabel; - QScopedPointer m_subLabel; - QPixmap m_pixmap; -}; - -} // namespace QtWebEngineWidgetUI - -#endif // MESSAGEBUBBLEWIDGET_P_H diff --git a/src/webenginewidgets/webenginewidgets.pro b/src/webenginewidgets/webenginewidgets.pro index 540c4d538..a891c062e 100644 --- a/src/webenginewidgets/webenginewidgets.pro +++ b/src/webenginewidgets/webenginewidgets.pro @@ -44,12 +44,6 @@ HEADERS = \ api/qwebengineview_p.h \ render_widget_host_view_qt_delegate_widget.h -qtConfig(webengine-ui-delegates) { - SOURCES += ui/messagebubblewidget.cpp - HEADERS += ui/messagebubblewidget_p.h - DEFINES += QT_UI_DELEGATES -} - qtConfig(webengine-spellchecker) { DEFINES += ENABLE_SPELLCHECK } -- cgit v1.2.3