From 3aab58b17eec73d3a7134650ec059c31f51bd108 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20E=2E=20Narv=C3=A1ez?= Date: Thu, 8 Mar 2012 07:40:20 -0500 Subject: Include Tab History when Cloning a Tab Implemented through a new loadUrl method that allows for the caller to specify the QWebHistory pointer from where to copy the history. Redirected the original loadUrl slot to use this new method internally. The method returns the WebTab * just in case we need to maninpulate the created tab in the future. REVIEW: 104082 --- src/application.cpp | 25 +++++++++++++++++++++---- src/application.h | 4 ++++ src/mainview.cpp | 3 ++- 3 files changed, 27 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/application.cpp b/src/application.cpp index e0570a5b..48fb1a3e 100644 --- a/src/application.cpp +++ b/src/application.cpp @@ -450,16 +450,15 @@ SyncManager *Application::syncManager() return m_syncManager.data(); } - -void Application::loadUrl(const KUrl& url, const Rekonq::OpenType& type) +WebTab* Application::loadUrl(const KUrl& url, QWebHistory* webHistory, const Rekonq::OpenType& type) { if (url.isEmpty()) - return; + return 0; if (!url.isValid()) { KMessageBox::error(0, i18n("Malformed URL:\n%1", url.url(KUrl::RemoveTrailingSlash))); - return; + return 0; } Rekonq::OpenType newType = type; @@ -517,6 +516,24 @@ void Application::loadUrl(const KUrl& url, const Rekonq::OpenType& type) FilterUrlJob *job = new FilterUrlJob(view, url.pathOrUrl(), this); Weaver::instance()->enqueue(job); } + + if (webHistory) + { + QByteArray historyBytes; + QDataStream historyStream(&historyBytes, QIODevice::ReadWrite); + + historyStream << *webHistory; + historyStream.device()->seek(0); + historyStream >> *(view->history()); + } + + return tab; +} + + +void Application::loadUrl(const KUrl& url, const Rekonq::OpenType& type) +{ + Q_UNUSED(loadUrl(url, 0, type)); } diff --git a/src/application.h b/src/application.h index 2689e3f5..5e078756 100644 --- a/src/application.h +++ b/src/application.h @@ -43,6 +43,7 @@ #include #include +class QWebHistory; // Forward Declarations class AdBlockManager; @@ -55,6 +56,7 @@ class OpenSearchManager; class SessionManager; class UserAgentManager; class SyncManager; +class WebTab; class KAction; @@ -104,6 +106,8 @@ public: { return _privateBrowsingAction; }; + + WebTab *loadUrl(const KUrl& url, QWebHistory *webHistory, const Rekonq::OpenType& type = Rekonq::CurrentTab); public Q_SLOTS: /** diff --git a/src/mainview.cpp b/src/mainview.cpp index 19e5531d..9fa4d049 100644 --- a/src/mainview.cpp +++ b/src/mainview.cpp @@ -414,8 +414,9 @@ void MainView::cloneTab(int index) return; KUrl url = webTab(index)->url(); + QWebHistory * history = webTab(index)->view()->history(); - rApp->loadUrl(url, Rekonq::NewTab); + rApp->loadUrl(url, history, Rekonq::NewTab); } -- cgit v1.2.1