[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    [falkon] src/lib: Detach WebTab when removing tab
From:       David Rosca <null () kde ! org>
Date:       2018-01-31 20:10:36
Message-ID: E1egyiK-0002Fo-MS () code ! kde ! org
[Download RAW message or body]

Git commit 1b473ac5808ac6d516b41734c08a20712316986e by David Rosca.
Committed on 31/01/2018 at 19:56.
Pushed by drosca into branch 'master'.

Detach WebTab when removing tab

That way tab is removed from parent and children before
it is removed from tabbar.

M  +1    -1    src/lib/tabwidget/tabwidget.cpp
M  +9    -14   src/lib/webtab/webtab.cpp
M  +0    -1    src/lib/webtab/webtab.h

https://commits.kde.org/falkon/1b473ac5808ac6d516b41734c08a20712316986e

diff --git a/src/lib/tabwidget/tabwidget.cpp b/src/lib/tabwidget/tabwidget.cpp
index 791b3772..d7484f32 100644
--- a/src/lib/tabwidget/tabwidget.cpp
+++ b/src/lib/tabwidget/tabwidget.cpp
@@ -441,7 +441,7 @@ void TabWidget::closeTab(int index)
 
     m_lastBackgroundTabIndex = -1;
 
-    removeTab(index);
+    webTab->detach();
     webTab->deleteLater();
 
     updateClosedTabsButton();
diff --git a/src/lib/webtab/webtab.cpp b/src/lib/webtab/webtab.cpp
index 25b23408..40ecd778 100644
--- a/src/lib/webtab/webtab.cpp
+++ b/src/lib/webtab/webtab.cpp
@@ -177,19 +177,6 @@ WebTab::WebTab(BrowserWindow* window)
     });
 }
 
-WebTab::~WebTab()
-{
-    if (m_parentTab) {
-        m_parentTab->m_childTabs.removeOne(this);
-        emit m_parentTab->childTabRemoved(this);
-    }
-
-    const auto childTabs = m_childTabs; // modified in loop
-    for (WebTab *child : childTabs) {
-        child->setParentTab(nullptr);
-    }
-}
-
 TabbedWebView* WebTab::webView() const
 {
     return m_webView;
@@ -293,7 +280,15 @@ void WebTab::detach()
     Q_ASSERT(m_tabBar);
 
     // Remove parent tab
-    setParentTab(nullptr);
+    if (m_parentTab) {
+        m_parentTab->m_childTabs.removeOne(this);
+        emit m_parentTab->childTabRemoved(this);
+    }
+    // Remove from child tabs
+    const auto childTabs = m_childTabs;
+    for (WebTab *child : childTabs) {
+        child->setParentTab(nullptr);
+    }
 
     // Remove icon from tab
     m_tabBar->setTabButton(tabIndex(), m_tabBar->iconButtonPosition(), nullptr);
diff --git a/src/lib/webtab/webtab.h b/src/lib/webtab/webtab.h
index 903d82aa..17001abd 100644
--- a/src/lib/webtab/webtab.h
+++ b/src/lib/webtab/webtab.h
@@ -59,7 +59,6 @@ public:
     };
 
     explicit WebTab(BrowserWindow* window);
-    ~WebTab();
 
     TabbedWebView* webView() const;
     LocationBar* locationBar() const;

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic