diff options
author | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2020-02-19 13:27:34 +0100 |
---|---|---|
committer | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2020-02-19 13:27:34 +0100 |
commit | 1e204ff6e91227de3bd2f105a1efbaf47ee2b5aa (patch) | |
tree | 1609ebd46902d5c568d3df08e593ff2b5919cbbc /src | |
parent | 18b0081aeda8fcd5c2d756c47bdd63cb7f89e891 (diff) | |
parent | 8b048ef2ba4e8414f4852f791964878a6dc3f00f (diff) |
Merge remote-tracking branch 'origin/5.14' into 5.15
Blacklisted one test requiring an update of qt5.git.
Conflicts:
.qmake.conf
Change-Id: I75e55a1c5f8840cde55ddb60d632287b2affadeb
Diffstat (limited to 'src')
-rw-r--r-- | src/core/file_picker_controller.cpp | 3 | ||||
-rw-r--r-- | src/core/web_contents_delegate_qt.cpp | 5 | ||||
-rw-r--r-- | src/webengine/api/qquickwebengineview.cpp | 31 | ||||
-rw-r--r-- | src/webengine/api/qquickwebengineview_p_p.h | 1 | ||||
-rw-r--r-- | src/webengine/render_widget_host_view_qt_delegate_quick.cpp | 49 | ||||
-rw-r--r-- | src/webengine/render_widget_host_view_qt_delegate_quick.h | 22 |
6 files changed, 102 insertions, 9 deletions
diff --git a/src/core/file_picker_controller.cpp b/src/core/file_picker_controller.cpp index 13e9437d2..62e02e126 100644 --- a/src/core/file_picker_controller.cpp +++ b/src/core/file_picker_controller.cpp @@ -172,6 +172,9 @@ QStringList FilePickerController::nameFilters(const QStringList &acceptedMimeTyp QStringList acceptedGlobs; QMimeDatabase mimeDatabase; + if (acceptedMimeTypes.isEmpty()) + return nameFilters; + for (QString type : acceptedMimeTypes) { if (type.startsWith(".")) { // A single suffix diff --git a/src/core/web_contents_delegate_qt.cpp b/src/core/web_contents_delegate_qt.cpp index 078b34d64..f409d8a7c 100644 --- a/src/core/web_contents_delegate_qt.cpp +++ b/src/core/web_contents_delegate_qt.cpp @@ -198,7 +198,10 @@ void WebContentsDelegateQt::NavigationStateChanged(content::WebContents* source, QString newTitle = toQt(source->GetTitle()); if (m_title != newTitle) { m_title = newTitle; - m_viewClient->titleChanged(m_title); + QTimer::singleShot(0, [delegate = AsWeakPtr(), title = newTitle] () { + if (delegate) + delegate->adapterClient()->titleChanged(title); + }); } } diff --git a/src/webengine/api/qquickwebengineview.cpp b/src/webengine/api/qquickwebengineview.cpp index 67d4142b9..8f5313a9d 100644 --- a/src/webengine/api/qquickwebengineview.cpp +++ b/src/webengine/api/qquickwebengineview.cpp @@ -753,26 +753,34 @@ QQuickWebEngineViewAccessible::QQuickWebEngineViewAccessible(QQuickWebEngineView QAccessibleInterface *QQuickWebEngineViewAccessible::parent() const { QQuickItem *parent = engineView()->parentItem(); - return QAccessible::queryAccessibleInterface(parent); + QAccessibleInterface *iface = QAccessible::queryAccessibleInterface(parent); + if (!iface) + return QAccessible::queryAccessibleInterface(engineView()->window()); + return iface; +} + +QAccessibleInterface *QQuickWebEngineViewAccessible::focusChild() const +{ + if (child(0) && child(0)->focusChild()) + return child(0)->focusChild(); + return const_cast<QQuickWebEngineViewAccessible *>(this); } int QQuickWebEngineViewAccessible::childCount() const { - if (engineView() && child(0)) - return 1; - return 0; + return child(0) ? 1 : 0; } QAccessibleInterface *QQuickWebEngineViewAccessible::child(int index) const { - if (index == 0) + if (index == 0 && engineView()) return engineView()->d_func()->adapter->browserAccessible(); return 0; } int QQuickWebEngineViewAccessible::indexOfChild(const QAccessibleInterface *c) const { - if (c == child(0)) + if (child(0) && c == child(0)) return 0; return -1; } @@ -784,7 +792,7 @@ QString QQuickWebEngineViewAccessible::text(QAccessible::Text) const QAccessible::Role QQuickWebEngineViewAccessible::role() const { - return QAccessible::Document; + return QAccessible::Client; } QAccessible::State QQuickWebEngineViewAccessible::state() const @@ -945,10 +953,17 @@ void QQuickWebEngineViewPrivate::widgetChanged(RenderWidgetHostViewQtDelegateQui { Q_Q(QQuickWebEngineView); - if (oldWidget) + if (oldWidget) { oldWidget->setParentItem(nullptr); +#if QT_CONFIG(accessibility) + QAccessible::deleteAccessibleInterface(QAccessible::uniqueId(QAccessible::queryAccessibleInterface(oldWidget))); +#endif + } if (newWidget) { +#if QT_CONFIG(accessibility) + QAccessible::registerAccessibleInterface(new QtWebEngineCore::RenderWidgetHostViewQtDelegateQuickAccessible(newWidget, q)); +#endif newWidget->setParentItem(q); newWidget->setSize(q->boundingRect().size()); // Focus on creation if the view accepts it diff --git a/src/webengine/api/qquickwebengineview_p_p.h b/src/webengine/api/qquickwebengineview_p_p.h index 8557a8db5..1f024167f 100644 --- a/src/webengine/api/qquickwebengineview_p_p.h +++ b/src/webengine/api/qquickwebengineview_p_p.h @@ -236,6 +236,7 @@ class QQuickWebEngineViewAccessible : public QAccessibleObject public: QQuickWebEngineViewAccessible(QQuickWebEngineView *o); QAccessibleInterface *parent() const override; + QAccessibleInterface *focusChild() const override; int childCount() const override; QAccessibleInterface *child(int index) const override; int indexOfChild(const QAccessibleInterface*) const override; diff --git a/src/webengine/render_widget_host_view_qt_delegate_quick.cpp b/src/webengine/render_widget_host_view_qt_delegate_quick.cpp index ac32671aa..ede85ca69 100644 --- a/src/webengine/render_widget_host_view_qt_delegate_quick.cpp +++ b/src/webengine/render_widget_host_view_qt_delegate_quick.cpp @@ -373,4 +373,53 @@ bool RenderWidgetHostViewQtDelegateQuick::copySurface(const QRect &rect, const Q return true; } +#if QT_CONFIG(accessibility) +RenderWidgetHostViewQtDelegateQuickAccessible::RenderWidgetHostViewQtDelegateQuickAccessible(RenderWidgetHostViewQtDelegateQuick *o, QQuickWebEngineView *view) + : QAccessibleObject(o) + , m_view(view) +{ +} + +QAccessibleInterface *RenderWidgetHostViewQtDelegateQuickAccessible::parent() const +{ + return QAccessible::queryAccessibleInterface(m_view)->parent(); +} + +QString RenderWidgetHostViewQtDelegateQuickAccessible::text(QAccessible::Text) const +{ + return QString(); +} + +QAccessible::Role RenderWidgetHostViewQtDelegateQuickAccessible::role() const +{ + return QAccessible::Client; +} + +QAccessible::State RenderWidgetHostViewQtDelegateQuickAccessible::state() const +{ + return QAccessible::queryAccessibleInterface(m_view)->state(); +} + +QAccessibleInterface *RenderWidgetHostViewQtDelegateQuickAccessible::focusChild() const +{ + return QAccessible::queryAccessibleInterface(m_view)->focusChild(); +} + +int RenderWidgetHostViewQtDelegateQuickAccessible::childCount() const +{ + return QAccessible::queryAccessibleInterface(m_view)->childCount(); +} + +QAccessibleInterface *RenderWidgetHostViewQtDelegateQuickAccessible::child(int index) const +{ + return QAccessible::queryAccessibleInterface(m_view)->child(index); +} + +int RenderWidgetHostViewQtDelegateQuickAccessible::indexOfChild(const QAccessibleInterface *c) const +{ + return QAccessible::queryAccessibleInterface(m_view)->indexOfChild(c); +} + +#endif // QT_CONFIG(accessibility) + } // namespace QtWebEngineCore diff --git a/src/webengine/render_widget_host_view_qt_delegate_quick.h b/src/webengine/render_widget_host_view_qt_delegate_quick.h index b55b2d658..6874aac2b 100644 --- a/src/webengine/render_widget_host_view_qt_delegate_quick.h +++ b/src/webengine/render_widget_host_view_qt_delegate_quick.h @@ -42,6 +42,7 @@ #include "render_widget_host_view_qt_delegate.h" +#include <QAccessibleObject> #include <QQuickItem> QT_BEGIN_NAMESPACE @@ -115,6 +116,27 @@ private: QQuickWebEngineView *m_view = nullptr; }; +#if QT_CONFIG(accessibility) +class RenderWidgetHostViewQtDelegateQuickAccessible : public QAccessibleObject +{ +public: + RenderWidgetHostViewQtDelegateQuickAccessible(RenderWidgetHostViewQtDelegateQuick *o, QQuickWebEngineView *view); + + QAccessibleInterface *parent() const override; + QString text(QAccessible::Text t) const override; + QAccessible::Role role() const override; + QAccessible::State state() const override; + + QAccessibleInterface *focusChild() const override; + int childCount() const override; + QAccessibleInterface *child(int index) const override; + int indexOfChild(const QAccessibleInterface *) const override; + +private: + QQuickWebEngineView *m_view; +}; +#endif // QT_CONFIG(accessibility) + } // namespace QtWebEngineCore #endif |