From 94a4d1918d5fe0d6d094b3f3cbc9e763a50bb19f Mon Sep 17 00:00:00 2001 From: Warwick Allison Date: Wed, 26 Aug 2009 09:17:04 +1000 Subject: Avoid shadowing QWebPage::view(). --- src/declarative/fx/qfxwebview.cpp | 6 +++--- src/declarative/fx/qfxwebview.h | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/declarative/fx/qfxwebview.cpp b/src/declarative/fx/qfxwebview.cpp index 347c9c2..5e3ce29 100644 --- a/src/declarative/fx/qfxwebview.cpp +++ b/src/declarative/fx/qfxwebview.cpp @@ -1174,15 +1174,15 @@ private: QFxWebView *webview; }; -QFxWebView *QFxWebPage::view() +QFxWebView *QFxWebPage::viewItem() { return static_cast(parent()); } QObject *QFxWebPage::createPlugin(const QString &, const QUrl &url, const QStringList ¶mNames, const QStringList ¶mValues) { - QUrl comp = qmlContext(view())->resolvedUrl(url); - return new QWidget_Dummy_Plugin(comp,view(),paramNames,paramValues); + QUrl comp = qmlContext(viewItem())->resolvedUrl(url); + return new QWidget_Dummy_Plugin(comp,viewItem(),paramNames,paramValues); } QT_END_NAMESPACE diff --git a/src/declarative/fx/qfxwebview.h b/src/declarative/fx/qfxwebview.h index 40c86b4..d7c9fd0 100644 --- a/src/declarative/fx/qfxwebview.h +++ b/src/declarative/fx/qfxwebview.h @@ -70,7 +70,7 @@ public: protected: QObject *createPlugin(const QString &classid, const QUrl &url, const QStringList ¶mNames, const QStringList ¶mValues); private: - QFxWebView *view(); + QFxWebView *viewItem(); }; -- cgit v0.12 From 642440f41c5cd4b5f0ee66101b3ca32859293d29 Mon Sep 17 00:00:00 2001 From: Warwick Allison Date: Wed, 26 Aug 2009 10:34:09 +1000 Subject: Fix handling of empty strings for URLs QUrl resolves empty to base, which is not desirable. Preserve emptiness of QUrl. Handle use of empty QUrl with WebView (WebKit doesn't handle empty URLs well either). --- src/declarative/fx/qfxwebview.cpp | 8 +++++++- src/declarative/qml/qmlcompiler.cpp | 2 +- src/declarative/qml/qmlcomponent.cpp | 2 +- src/declarative/qml/qmlcontext.cpp | 2 +- 4 files changed, 10 insertions(+), 4 deletions(-) diff --git a/src/declarative/fx/qfxwebview.cpp b/src/declarative/fx/qfxwebview.cpp index 4c1629e..04a4eef 100644 --- a/src/declarative/fx/qfxwebview.cpp +++ b/src/declarative/fx/qfxwebview.cpp @@ -325,6 +325,12 @@ QUrl QFxWebView::url() const void QFxWebView::setUrl(const QUrl &url) { + if (url.isEmpty()) { + // Make absolute. + setUrl(QUrl("about:blank")); + return; + } + Q_D(QFxWebView); if (url == page()->mainFrame()->url()) return; @@ -333,7 +339,7 @@ void QFxWebView::setUrl(const QUrl &url) d->idealwidth>0 ? d->idealwidth : width(), d->idealheight>0 ? d->idealheight : height())); - Q_ASSERT(url.isEmpty() || !url.isRelative()); + Q_ASSERT(!url.isRelative()); if (isComponentComplete()) page()->mainFrame()->load(url); diff --git a/src/declarative/qml/qmlcompiler.cpp b/src/declarative/qml/qmlcompiler.cpp index bbcc64d..4f96d12 100644 --- a/src/declarative/qml/qmlcompiler.cpp +++ b/src/declarative/qml/qmlcompiler.cpp @@ -365,7 +365,7 @@ void QmlCompiler::genLiteralAssignment(const QMetaProperty &prop, case QVariant::Url: { instr.type = QmlInstruction::StoreUrl; - QUrl u = output->url.resolved(QUrl(string)); + QUrl u = string.isEmpty() ? QUrl() : output->url.resolved(QUrl(string)); instr.storeUrl.propertyIndex = prop.propertyIndex(); instr.storeUrl.value = output->indexForString(u.toString()); } diff --git a/src/declarative/qml/qmlcomponent.cpp b/src/declarative/qml/qmlcomponent.cpp index 0e141da..e277d91 100644 --- a/src/declarative/qml/qmlcomponent.cpp +++ b/src/declarative/qml/qmlcomponent.cpp @@ -355,7 +355,7 @@ void QmlComponent::loadUrl(const QUrl &url) d->clear(); - if (url.isRelative()) + if (url.isRelative() && !url.isEmpty()) d->url = d->engine->baseUrl().resolved(url); else d->url = url; diff --git a/src/declarative/qml/qmlcontext.cpp b/src/declarative/qml/qmlcontext.cpp index 61850c3..97ab375 100644 --- a/src/declarative/qml/qmlcontext.cpp +++ b/src/declarative/qml/qmlcontext.cpp @@ -422,7 +422,7 @@ void QmlContext::setContextProperty(const QString &name, QObject *value) QUrl QmlContext::resolvedUrl(const QUrl &src) { QmlContext *ctxt = this; - if (src.isRelative()) { + if (src.isRelative() && !src.isEmpty()) { if (ctxt) { while(ctxt) { if(ctxt->d_func()->url.isValid()) -- cgit v0.12