diff --git a/src/frame/framemanager.h b/src/frame/framemanager.h --- a/src/frame/framemanager.h +++ b/src/frame/framemanager.h @@ -39,6 +39,7 @@ { class Frame; +class MainFrame; class OpenUrlRequest; class AKREGATOR_EXPORT FrameManager : public QObject @@ -64,6 +65,8 @@ void slotAddFrame(Frame *frame); void slotRemoveFrame(int frameId); + void slotRemoveMainFrame(MainFrame *frame); + void slotChangeFrame(int frameId); void slotOpenUrlRequest(Akregator::OpenUrlRequest &request, bool useOpenInBackgroundSetting = true); diff --git a/src/frame/framemanager.cpp b/src/frame/framemanager.cpp --- a/src/frame/framemanager.cpp +++ b/src/frame/framemanager.cpp @@ -26,6 +26,7 @@ #include "config-akregator.h" #include "akregatorconfig.h" #include "frame.h" +#include "mainframe.h" #include "actionmanager.h" #include "openurlrequest.h" #include @@ -102,6 +103,17 @@ delete frame; } +void FrameManager::slotRemoveMainFrame(MainFrame *frame) +{ + for (auto iter = m_frames.begin(); iter != m_frames.end(); ++iter) { + if (frame == iter.value()) { + int id = iter.key(); + m_frames.erase(iter); + return; + } + } +} + Frame *FrameManager::findFrameById(int id) const { return m_frames.value(id); diff --git a/src/mainwidget.cpp b/src/mainwidget.cpp --- a/src/mainwidget.cpp +++ b/src/mainwidget.cpp @@ -344,6 +344,8 @@ delete m_articleListView; // same for this one delete m_mainTab; + + Kernel::self()->frameManager()->slotRemoveMainFrame(m_mainFrame); delete m_mainFrame; m_mainFrame = 0;