From c5a47ed24e8489ee1c002712c17394eaebc986e4 Mon Sep 17 00:00:00 2001
From: fourtf <tf.four@gmail.com>
Date: Tue, 10 Apr 2018 15:59:53 +0200
Subject: [PATCH] Open the last selected tab on restart

---
 src/singletons/windowmanager.cpp | 10 ++++++++++
 src/widgets/notebook.cpp         | 14 ++++++++++++++
 src/widgets/notebook.hpp         | 10 ++--------
 3 files changed, 26 insertions(+), 8 deletions(-)

diff --git a/src/singletons/windowmanager.cpp b/src/singletons/windowmanager.cpp
index 1530062bc..c99fce47d 100644
--- a/src/singletons/windowmanager.cpp
+++ b/src/singletons/windowmanager.cpp
@@ -186,6 +186,11 @@ void WindowManager::initialize()
                 tab->getTab()->useDefaultTitle = false;
             }
 
+            // selected
+            if (tab_obj.value("selected").toBool(false)) {
+                window.getNotebook().select(tab);
+            }
+
             // load splits
             int colNr = 0;
             for (QJsonValue column_val : tab_obj.value("splits").toArray()) {
@@ -251,6 +256,11 @@ void WindowManager::save()
                 tab_obj.insert("title", tab->getTab()->getTitle());
             }
 
+            // selected
+            if (window->getNotebook().getSelectedPage() == tab) {
+                tab_obj.insert("selected", true);
+            }
+
             // splits
             QJsonArray columns_arr;
             std::vector<std::vector<widgets::Split *>> columns = tab->getColumns();
diff --git a/src/widgets/notebook.cpp b/src/widgets/notebook.cpp
index 3faa0409e..086eb4a9d 100644
--- a/src/widgets/notebook.cpp
+++ b/src/widgets/notebook.cpp
@@ -119,6 +119,20 @@ void Notebook::removeCurrentPage()
     this->removePage(this->selectedPage);
 }
 
+SplitContainer *Notebook::getOrAddSelectedPage()
+{
+    if (selectedPage == nullptr) {
+        this->addNewPage(true);
+    }
+
+    return selectedPage;
+}
+
+SplitContainer *Notebook::getSelectedPage()
+{
+    return selectedPage;
+}
+
 void Notebook::select(SplitContainer *page)
 {
     if (page == this->selectedPage) {
diff --git a/src/widgets/notebook.hpp b/src/widgets/notebook.hpp
index 9f0bd4f17..af1c207c6 100644
--- a/src/widgets/notebook.hpp
+++ b/src/widgets/notebook.hpp
@@ -30,14 +30,8 @@ public:
     void select(SplitContainer *page);
     void selectIndex(int index);
 
-    SplitContainer *getOrAddSelectedPage()
-    {
-        if (selectedPage == nullptr) {
-            this->addNewPage(true);
-        }
-
-        return selectedPage;
-    }
+    SplitContainer *getOrAddSelectedPage();
+    SplitContainer *getSelectedPage();
 
     void performLayout(bool animate = true);