From 8302ea16430afc414807c5251f04f129172e8995 Mon Sep 17 00:00:00 2001 From: Andrea Diamantini Date: Thu, 13 Oct 2011 00:58:30 +0200 Subject: Fix crash on private mode store/restore This commit, while does not perfectly fix the issue, "workaround" it a lot to fix crashes on private mode enter/exit - improve session store/restore - improve session manager code - calm down kDebug messages - applies code style CCBUG: 268328 --- src/application.cpp | 27 +++++++++++++++++++-------- 1 file changed, 19 insertions(+), 8 deletions(-) (limited to 'src/application.cpp') diff --git a/src/application.cpp b/src/application.cpp index 39879e4c..6f9df43a 100644 --- a/src/application.cpp +++ b/src/application.cpp @@ -691,27 +691,38 @@ void Application::setPrivateBrowsingMode(bool b) return; } + sessionManager()->setSessionManagementEnabled(false); settings->setAttribute(QWebSettings::PrivateBrowsingEnabled, true); _privateBrowsingAction->setChecked(true); + loadUrl(KUrl("about:home"), Rekonq::NewWindow); + + MainWindow *activeOne = m_mainWindows.at(0).data(); + Q_FOREACH(const QWeakPointer &w, m_mainWindows) { - w.data()->close(); + if (w.data() != activeOne) + w.data()->close(); } - loadUrl(KUrl("about:home"), Rekonq::NewWindow); } else { - Q_FOREACH(const QWeakPointer &w, m_mainWindows) - { - w.data()->close(); - } - settings->setAttribute(QWebSettings::PrivateBrowsingEnabled, false); _privateBrowsingAction->setChecked(false); - if (!sessionManager()->restoreSessionFromScratch()) + int newWindows = sessionManager()->restoreSavedSession(); + if (newWindows == 0) + { loadUrl(KUrl("about:home"), Rekonq::NewWindow); + newWindows++; + } + + for (int i = newWindows; i < m_mainWindows.count(); ++i) + { + m_mainWindows.at(i).data()->close(); + } + + sessionManager()->setSessionManagementEnabled(true); } } -- cgit v1.2.1