From 7b3b4f9b94d8cc4a2e794d8452956392bb9c3c77 Mon Sep 17 00:00:00 2001 From: nowrep Date: Fri, 15 Feb 2013 22:18:46 +0100 Subject: [PATCH] [Regression] Fixed restoring session with pinned tabs. Regression from adding tabs on top feature. --- src/lib/app/mainapplication.cpp | 1 - src/lib/app/qupzilla.cpp | 19 ++++++++++--------- src/lib/app/qupzilla.h | 3 ++- src/lib/webview/tabwidget.cpp | 7 ++++++- 4 files changed, 18 insertions(+), 12 deletions(-) diff --git a/src/lib/app/mainapplication.cpp b/src/lib/app/mainapplication.cpp index 031a83e9a..10f187e73 100644 --- a/src/lib/app/mainapplication.cpp +++ b/src/lib/app/mainapplication.cpp @@ -1058,7 +1058,6 @@ bool MainApplication::restoreStateSlot(QupZilla* window, RestoreData recoveryDat // Instead create new one and restore pinned tabs there QupZilla* newWin = makeNewWindow(Qz::BW_OtherRestoredWindow); - newWin->tabWidget()->restorePinnedTabs(); newWin->restoreWindowState(recoveryData.takeFirst()); } else { diff --git a/src/lib/app/qupzilla.cpp b/src/lib/app/qupzilla.cpp index 5ef387eb9..bbd9f3d5b 100644 --- a/src/lib/app/qupzilla.cpp +++ b/src/lib/app/qupzilla.cpp @@ -115,7 +115,7 @@ QupZilla::QupZilla(Qz::BrowserWindow type, QUrl startUrl) , m_isClosing(false) , m_isStarting(false) , m_startingUrl(startUrl) - , m_startBehaviour(type) + , m_windowType(type) , m_menuBookmarksAction(0) , m_actionPrivateBrowsing(0) , m_sideBarManager(new SideBarManager(this)) @@ -157,10 +157,6 @@ void QupZilla::postLaunch() loadSettings(); - if (m_startBehaviour == Qz::BW_FirstAppWindow) { - m_tabWidget->restorePinnedTabs(); - } - Settings settings; int afterLaunch = settings.value("Web-URL-Settings/afterLaunch", 1).toInt(); bool addTab = true; @@ -184,7 +180,7 @@ void QupZilla::postLaunch() break; } - switch (m_startBehaviour) { + switch (m_windowType) { case Qz::BW_FirstAppWindow: if (mApp->isStartingAfterCrash()) { addTab = true; @@ -223,7 +219,7 @@ void QupZilla::postLaunch() } } - if (m_tabWidget->getTabBar()->normalTabsCount() <= 0 && m_startBehaviour != Qz::BW_OtherRestoredWindow) { + if (m_tabWidget->getTabBar()->normalTabsCount() <= 0 && m_windowType != Qz::BW_OtherRestoredWindow) { //Something went really wrong .. add one tab QNetworkRequest request(m_homepage); request.setRawHeader("X-QupZilla-UserLoadAction", QByteArray("1")); @@ -268,7 +264,7 @@ void QupZilla::setupUi() setGeometry(QRect(20, 20, 800, 550)); } - if (m_startBehaviour == Qz::BW_NewWindow) { + if (m_windowType == Qz::BW_NewWindow) { // Moving window +40 x,y to be visible that this is new window QPoint p = pos(); p.setX(p.x() + 40); @@ -811,6 +807,11 @@ LocationBar* QupZilla::locationBar() const return qobject_cast(m_tabWidget->locationBars()->currentWidget()); } +Qz::BrowserWindow QupZilla::windowType() const +{ + return m_windowType; +} + QWidget* QupZilla::navigationContainer() const { if (!qzSettings->tabsOnTop) { @@ -2257,7 +2258,7 @@ int QupZilla::getCurrentVirtualDesktop() const void QupZilla::moveToVirtualDesktop(int desktopId) { // Don't move when window is already visible or it is first app window - if (desktopId < 0 || isVisible() || m_startBehaviour == Qz::BW_FirstAppWindow) { + if (desktopId < 0 || isVisible() || m_windowType == Qz::BW_FirstAppWindow) { return; } diff --git a/src/lib/app/qupzilla.h b/src/lib/app/qupzilla.h index b6b1ae152..36b958351 100644 --- a/src/lib/app/qupzilla.h +++ b/src/lib/app/qupzilla.h @@ -91,6 +91,7 @@ public: TabbedWebView* weView(int index) const; LocationBar* locationBar() const; + Qz::BrowserWindow windowType() const; TabWidget* tabWidget() { return m_tabWidget; } BookmarksToolbar* bookmarksToolbar() { return m_bookmarksToolbar; } StatusBarMessage* statusBarMessage() { return m_statusBarMessage; } @@ -256,7 +257,7 @@ private: bool m_isStarting; QUrl m_startingUrl; QUrl m_homepage; - Qz::BrowserWindow m_startBehaviour; + Qz::BrowserWindow m_windowType; QVBoxLayout* m_mainLayout; QSplitter* m_mainSplitter; diff --git a/src/lib/webview/tabwidget.cpp b/src/lib/webview/tabwidget.cpp index 70586e778..6e9f0c243 100644 --- a/src/lib/webview/tabwidget.cpp +++ b/src/lib/webview/tabwidget.cpp @@ -854,7 +854,6 @@ void TabWidget::restorePinnedTabs() } m_tabBar->updatePinnedTabCloseButton(addedIndex); -// m_tabBar->moveTab(addedIndex, i); } m_isRestoringState = false; @@ -892,6 +891,12 @@ bool TabWidget::restoreState(const QList &tabs, int currentTab { m_isRestoringState = true; + Qz::BrowserWindow type = p_QupZilla->windowType(); + + if (type == Qz::BW_FirstAppWindow || type == Qz::BW_MacFirstWindow) { + restorePinnedTabs(); + } + for (int i = 0; i < tabs.size(); ++i) { WebTab::SavedTab tab = tabs.at(i);