diff options
Diffstat (limited to 'src/webengine/api/qquickwebengineview.cpp')
-rw-r--r-- | src/webengine/api/qquickwebengineview.cpp | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/src/webengine/api/qquickwebengineview.cpp b/src/webengine/api/qquickwebengineview.cpp index 64c7f337e..58262cd3f 100644 --- a/src/webengine/api/qquickwebengineview.cpp +++ b/src/webengine/api/qquickwebengineview.cpp @@ -43,6 +43,7 @@ #include "qquickwebengineview_p_p.h" #include "javascript_dialog_controller.h" +#include "qquickwebenginehistory_p.h" #include "qquickwebengineloadrequest_p.h" #include "qquickwebenginenewviewrequest_p.h" #include "render_widget_host_view_qt_delegate_quick.h" @@ -67,6 +68,7 @@ QQuickWebEngineViewPrivate::QQuickWebEngineViewPrivate() : adapter(new WebContentsAdapter(qApp->property("QQuickWebEngineView_DisableHardwareAcceleration").toBool() ? SoftwareRenderingMode : HardwareAccelerationMode)) , e(new QQuickWebEngineViewExperimental(this)) , v(new QQuickWebEngineViewport(this)) + , m_history(new QQuickWebEngineHistory(this)) , contextMenuExtraItems(0) , loadProgress(0) , inspectable(false) @@ -359,6 +361,8 @@ QQuickWebEngineView::QQuickWebEngineView(QQuickItem *parent) d->e->q_ptr = this; d->adapter->initialize(d); + QObject::connect(this, &QQuickWebEngineView::loadingChanged, d->m_history.data(), &QQuickWebEngineHistory::reset); + this->setFocus(true); this->setActiveFocusOnTab(true); this->setFlag(QQuickItem::ItemIsFocusScope); @@ -514,6 +518,29 @@ void QQuickWebEngineViewExperimental::runJavaScript(const QString &script, const d_ptr->adapter->runJavaScript(script, /*xPath=*/QString()); } +QQuickWebEngineHistory *QQuickWebEngineViewExperimental::navigationHistory() const +{ + return d_ptr->m_history.data(); +} + +void QQuickWebEngineViewExperimental::goBackTo(int index) +{ + int count = d_ptr->adapter->currentNavigationEntryIndex(); + if (index < 0 || index >= count) + return; + + d_ptr->adapter->navigateToIndex(count - 1 - index); +} + +void QQuickWebEngineViewExperimental::goForwardTo(int index) +{ + int count = d_ptr->adapter->navigationEntryCount() - d_ptr->adapter->currentNavigationEntryIndex() - 1; + if (index < 0 || index >= count) + return; + + d_ptr->adapter->navigateToIndex(d_ptr->adapter->currentNavigationEntryIndex() + 1 + index); +} + void QQuickWebEngineView::geometryChanged(const QRectF &newGeometry, const QRectF &oldGeometry) { QQuickItem::geometryChanged(newGeometry, oldGeometry); |