[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