SVN commit 957817 by michaelhowell: Add new method, KWebView::load(), as a convenience similar to QWebView::load(). M +17 -0 kdewebkit/kwebview.cpp M +10 -0 kdewebkit/kwebview.h M +1 -1 part/webkitpart.cpp M +1 -0 part/webpage.cpp --- trunk/playground/libs/webkitkde/kdewebkit/kwebview.cpp #957816:957817 @@ -29,11 +29,14 @@ #include #include +#include // Where's the Qt includes? +#include #include #include #include #include +#include class KWebView::KWebViewPrivate { @@ -176,3 +179,17 @@ d->searchBar->setFoundMatch(status); } +void KWebView::load(const KUrl &url, const KParts::OpenUrlArguments &args, const KParts::BrowserArguments &bargs) { + QNetworkRequest req; + + req.setUrl(url); + if (args.reload()) pageAction(KWebPage::Reload)->trigger(); + req.setRawHeader("Referer", args.metaData()["referrer"].toUtf8()); + + if (bargs.postData.isEmpty()) { + QWebView::load(req); + } else { + QWebView::load(req, QNetworkAccessManager::PostOperation, bargs.postData); + } +} + --- trunk/playground/libs/webkitkde/kdewebkit/kwebview.h #957816:957817 @@ -34,6 +34,11 @@ class KUrl; class QMouseEvent; class QWheelEvent; +namespace KParts +{ +class OpenUrlArguments; +class BrowserArguments; +} class KDE_EXPORT KWebView : public QWebView { @@ -47,6 +52,11 @@ public Q_SLOTS: void setCustomContextMenu(bool show); + /** + * similar to load(const QNetworkRequest&, QNetworkAccessManager::Operation), but for KParts-style arguments instead. + */ + void load(const KUrl &url, const KParts::OpenUrlArguments &args, const KParts::BrowserArguments &bargs); + Q_SIGNALS: void showContextMenu(QContextMenuEvent *event); void openUrl(const KUrl &url); --- trunk/playground/libs/webkitkde/part/webkitpart.cpp #957816:957817 @@ -148,7 +148,7 @@ { setUrl(url); - m_webView->load(url); + m_webView->load(url, arguments(), browserExtension()->browserArguments()); return true; } --- trunk/playground/libs/webkitkde/part/webpage.cpp #957816:957817 @@ -71,6 +71,7 @@ kDebug() << type; KParts::ReadOnlyPart *part = 0; KParts::OpenUrlArguments args; + args.metaData()["referrer"] = mainFrame()->url().toString(); //if (type == WebModalDialog) //TODO: correct behavior? args.metaData()["forcenewwindow"] = "true";