summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorDavid E. Narváez <david.narvaez@computer.org>2012-03-08 07:40:20 -0500
committerDavid E. Narváez <david.narvaez@computer.org>2012-03-08 07:40:20 -0500
commit3aab58b17eec73d3a7134650ec059c31f51bd108 (patch)
tree5b4142a9405d01534edd566eeb440121889f6881 /src
parentDon't show dots after "Save Link" text if we are not going to ask for (diff)
downloadrekonq-3aab58b17eec73d3a7134650ec059c31f51bd108.tar.xz
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
Diffstat (limited to 'src')
-rw-r--r--src/application.cpp25
-rw-r--r--src/application.h4
-rw-r--r--src/mainview.cpp3
3 files changed, 27 insertions, 5 deletions
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 <QtCore/QDateTime>
#include <QtCore/QWeakPointer>
+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);
}