diff options
Diffstat (limited to 'src/webenginewidgets/api')
-rw-r--r-- | src/webenginewidgets/api/qwebengineview.cpp | 31 | ||||
-rw-r--r-- | src/webenginewidgets/api/qwebengineview.h | 5 | ||||
-rw-r--r-- | src/webenginewidgets/api/qwebengineview_p.h | 9 |
3 files changed, 45 insertions, 0 deletions
diff --git a/src/webenginewidgets/api/qwebengineview.cpp b/src/webenginewidgets/api/qwebengineview.cpp index 9fa5f11fc..5fdd995b8 100644 --- a/src/webenginewidgets/api/qwebengineview.cpp +++ b/src/webenginewidgets/api/qwebengineview.cpp @@ -43,12 +43,15 @@ #include "render_widget_host_view_qt_delegate_client.h" #include "render_widget_host_view_qt_delegate_item.h" #include "qwebengine_accessible.h" +#include "ui/autofillpopupwidget_p.h" #include <QtWebEngineCore/private/qwebenginepage_p.h> #include <QtWebEngineCore/qwebenginecontextmenurequest.h> #include <QtWebEngineCore/qwebenginehistory.h> #include <QtWebEngineCore/qwebenginehttprequest.h> #include <QtWebEngineCore/qwebengineprofile.h> + +#include "autofill_popup_controller.h" #include "color_chooser_controller.h" #include "web_contents_adapter.h" @@ -911,6 +914,34 @@ QWebEngineContextMenuRequest *QWebEngineViewPrivate::lastContextMenuRequest() co { return m_contextRequest; } + +void QWebEngineViewPrivate::showAutofillPopup(QtWebEngineCore::AutofillPopupController *controller, + const QRect &bounds, bool autoselectFirstSuggestion) +{ + Q_Q(QWebEngineView); + if (!m_autofillPopupWidget) + m_autofillPopupWidget.reset(new QtWebEngineWidgetUI::AutofillPopupWidget(controller, q)); + m_autofillPopupWidget->showPopup(q->mapToGlobal(bounds.bottomLeft()), bounds.width() + 2, + autoselectFirstSuggestion); + controller->notifyPopupShown(); +} + +void QWebEngineViewPrivate::hideAutofillPopup() +{ + if (!m_autofillPopupWidget) + return; + + Q_Q(QWebEngineView); + QTimer::singleShot(0, q, [this] { + if (m_autofillPopupWidget) { + QtWebEngineCore::AutofillPopupController *controller = + m_autofillPopupWidget->m_controller; + m_autofillPopupWidget.reset(); + controller->notifyPopupHidden(); + } + }); +} + /*! \fn QWebEngineView::renderProcessTerminated(QWebEnginePage::RenderProcessTerminationStatus terminationStatus, int exitCode) \since 5.6 diff --git a/src/webenginewidgets/api/qwebengineview.h b/src/webenginewidgets/api/qwebengineview.h index cc1495d24..b3dd66f85 100644 --- a/src/webenginewidgets/api/qwebengineview.h +++ b/src/webenginewidgets/api/qwebengineview.h @@ -47,6 +47,10 @@ #include <QtWebEngineWidgets/qtwebenginewidgetsglobal.h> #include <QtWebEngineCore/qwebenginepage.h> +namespace QtWebEngineWidgetUI { +class AutofillPopupWidget; +} + QT_BEGIN_NAMESPACE class QContextMenuEvent; @@ -169,6 +173,7 @@ private: Q_DECLARE_PRIVATE(QWebEngineView) QScopedPointer<QWebEngineViewPrivate> d_ptr; + friend class QtWebEngineWidgetUI::AutofillPopupWidget; friend class QWebEnginePage; friend class QWebEnginePagePrivate; #if QT_CONFIG(accessibility) diff --git a/src/webenginewidgets/api/qwebengineview_p.h b/src/webenginewidgets/api/qwebengineview_p.h index e3c9468ce..44eb32203 100644 --- a/src/webenginewidgets/api/qwebengineview_p.h +++ b/src/webenginewidgets/api/qwebengineview_p.h @@ -56,12 +56,17 @@ #include "render_view_context_menu_qt.h" namespace QtWebEngineCore { +class AutofillPopupController; class QWebEngineContextMenuRequest; class WebEngineQuickWidget; class RenderWidgetHostViewQtDelegate; class RenderWidgetHostViewQtDelegateClient; } +namespace QtWebEngineWidgetUI { +class AutofillPopupWidget; +} + QT_BEGIN_NAMESPACE class QMenu; @@ -99,6 +104,9 @@ public: void didPrintPage(QPrinter *&printer, QSharedPointer<QByteArray> result) override; void didPrintPageToPdf(const QString &filePath, bool success) override; void printRequested() override; + void showAutofillPopup(QtWebEngineCore::AutofillPopupController *controller, + const QRect &bounds, bool autoselectFirstSuggestion) override; + void hideAutofillPopup() override; QWebEngineViewPrivate(); virtual ~QWebEngineViewPrivate(); @@ -117,6 +125,7 @@ public: bool m_dragEntered; mutable bool m_ownsPage; QWebEngineContextMenuRequest *m_contextRequest; + QScopedPointer<QtWebEngineWidgetUI::AutofillPopupWidget> m_autofillPopupWidget; }; class QContextMenuBuilder : public QtWebEngineCore::RenderViewContextMenuQt |