[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: [falkon] src/lib: WebTab: Preserve order of child tabs in session file
From: David Rosca <null () kde ! org>
Date: 2018-01-31 20:10:36
Message-ID: E1egyiK-0002Fo-TZ () code ! kde ! org
[Download RAW message or body]
Git commit 85def54d3c13290279a86358074d26785524b2d0 by David Rosca.
Committed on 31/01/2018 at 20:05.
Pushed by drosca into branch 'master'.
WebTab: Preserve order of child tabs in session file
M +11 -5 src/lib/tabwidget/tabwidget.cpp
M +12 -1 src/lib/webtab/webtab.cpp
M +1 -0 src/lib/webtab/webtab.h
https://commits.kde.org/falkon/85def54d3c13290279a86358074d26785524b2d0
diff --git a/src/lib/tabwidget/tabwidget.cpp b/src/lib/tabwidget/tabwidget.cpp
index d7484f32..76956461 100644
--- a/src/lib/tabwidget/tabwidget.cpp
+++ b/src/lib/tabwidget/tabwidget.cpp
@@ -790,19 +790,25 @@ bool TabWidget::restoreState(const QVector<WebTab::SavedTab> &tabs, int currentT
return false;
}
- QVector<QPair<WebTab*, int>> parentTabs;
+ QVector<QPair<WebTab*, QVector<int>>> childTabs;
for (int i = 0; i < tabs.size(); ++i) {
WebTab::SavedTab tab = tabs.at(i);
WebTab *webTab = weTab(addView(QUrl(), Qz::NT_CleanSelectedTab, false, tab.isPinned));
webTab->restoreTab(tab);
- if (tab.parentTab >= 0) {
- parentTabs.append({webTab, tab.parentTab});
+ if (!tab.childTabs.isEmpty()) {
+ childTabs.append({webTab, tab.childTabs});
}
}
- for (const auto p : qAsConst(parentTabs)) {
- p.first->setParentTab(weTab(p.second));
+ for (const auto p : qAsConst(childTabs)) {
+ const auto indices = p.second;
+ for (int index : indices) {
+ WebTab *t = weTab(index);
+ if (t) {
+ p.first->addChildTab(t);
+ }
+ }
}
setCurrentIndex(currentTab);
diff --git a/src/lib/webtab/webtab.cpp b/src/lib/webtab/webtab.cpp
index d943da16..1b3421d6 100644
--- a/src/lib/webtab/webtab.cpp
+++ b/src/lib/webtab/webtab.cpp
@@ -36,7 +36,7 @@
#include <QTimer>
#include <QSplitter>
-static const int savedTabVersion = 4;
+static const int savedTabVersion = 5;
WebTab::SavedTab::SavedTab()
: isPinned(false)
@@ -54,6 +54,12 @@ WebTab::SavedTab::SavedTab(WebTab* webTab)
isPinned = webTab->isPinned();
zoomLevel = webTab->zoomLevel();
parentTab = webTab->parentTab() ? webTab->parentTab()->tabIndex() : -1;
+
+ const auto children = webTab->childTabs();
+ childTabs.reserve(children.count());
+ for (WebTab *child : children) {
+ childTabs.append(child->tabIndex());
+ }
}
bool WebTab::SavedTab::isValid() const
@@ -70,6 +76,7 @@ void WebTab::SavedTab::clear()
isPinned = false;
zoomLevel = qzSettings->defaultZoomLevel;
parentTab = -1;
+ childTabs.clear();
}
QDataStream &operator <<(QDataStream &stream, const WebTab::SavedTab &tab)
@@ -82,6 +89,7 @@ QDataStream &operator <<(QDataStream &stream, const WebTab::SavedTab &tab)
stream << tab.isPinned;
stream << tab.zoomLevel;
stream << tab.parentTab;
+ stream << tab.childTabs;
return stream;
}
@@ -109,6 +117,9 @@ QDataStream &operator >>(QDataStream &stream, WebTab::SavedTab &tab)
if (version >= 4)
stream >> tab.parentTab;
+ if (version >= 5)
+ stream >> tab.childTabs;
+
tab.icon = QIcon(pixmap);
return stream;
diff --git a/src/lib/webtab/webtab.h b/src/lib/webtab/webtab.h
index 58ed9853..6cb9b440 100644
--- a/src/lib/webtab/webtab.h
+++ b/src/lib/webtab/webtab.h
@@ -47,6 +47,7 @@ public:
bool isPinned;
int zoomLevel;
int parentTab;
+ QVector<int> childTabs;
SavedTab();
SavedTab(WebTab* webTab);
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic