From 9fa8c8cea037721018e4c4b4c41b86d270991aad Mon Sep 17 00:00:00 2001 From: torusrxxx Date: Sat, 16 Sep 2023 09:30:24 +0800 Subject: [PATCH] delete widget when closing tab --- src/gui/Src/Gui/ReferenceManager.cpp | 11 +++++++++-- src/gui/Src/Gui/SourceViewerManager.cpp | 7 ++----- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/src/gui/Src/Gui/ReferenceManager.cpp b/src/gui/Src/Gui/ReferenceManager.cpp index 4a9e0348..c108df56 100644 --- a/src/gui/Src/Gui/ReferenceManager.cpp +++ b/src/gui/Src/Gui/ReferenceManager.cpp @@ -50,13 +50,20 @@ void ReferenceManager::newReferenceView(QString name) void ReferenceManager::closeTab(int index) { + auto view = qobject_cast(widget(index)); removeTab(index); + if(mCurrentReferenceView == view) + mCurrentReferenceView = nullptr; + if(view) + delete view; if(count() <= 0) emit showCpu(); } void ReferenceManager::closeAllTabs() { - clear(); - emit showCpu(); + while(count()) + { + closeTab(0); + } } diff --git a/src/gui/Src/Gui/SourceViewerManager.cpp b/src/gui/Src/Gui/SourceViewerManager.cpp index eb519145..5f676ed6 100644 --- a/src/gui/Src/Gui/SourceViewerManager.cpp +++ b/src/gui/Src/Gui/SourceViewerManager.cpp @@ -65,17 +65,14 @@ void SourceViewerManager::closeTab(int index) auto sourceView = qobject_cast(widget(index)); removeTab(index); if(sourceView) - sourceView->clear(); + delete sourceView; } void SourceViewerManager::closeAllTabs() { while(count()) { - auto sourceView = qobject_cast(widget(0)); - removeTab(0); - if(sourceView) - sourceView->clear(); + closeTab(0); } }