Fix crash on close in sidebar/bookmarks view

Explicitly close all views of the sidebar _before_ the core is
destructed. E.g. the bookmarks view tries to access the core in
it's destructor.
This commit is contained in:
Kai Koehne
2010-08-11 14:59:04 +02:00
parent 3ccc079cd3
commit 8110c88781
3 changed files with 15 additions and 3 deletions

View File

@@ -283,9 +283,6 @@ MainWindow::~MainWindow()
delete m_rightPaneWidget; delete m_rightPaneWidget;
m_rightPaneWidget = 0; m_rightPaneWidget = 0;
delete m_navigationWidget;
m_navigationWidget = 0;
delete m_modeManager; delete m_modeManager;
m_modeManager = 0; m_modeManager = 0;
delete m_mimeDatabase; delete m_mimeDatabase;
@@ -366,7 +363,11 @@ void MainWindow::closeEvent(QCloseEvent *event)
} }
emit m_coreImpl->coreAboutToClose(); emit m_coreImpl->coreAboutToClose();
writeSettings(); writeSettings();
m_navigationWidget->closeSubWidgets();
event->accept(); event->accept();
} }

View File

@@ -340,6 +340,15 @@ void NavigationWidget::restoreSettings(QSettings *settings)
} }
} }
void NavigationWidget::closeSubWidgets()
{
foreach (NavigationSubWidget *subWidget, m_subWidgets) {
subWidget->saveSettings();
delete subWidget;
}
m_subWidgets.clear();
}
void NavigationWidget::setShown(bool b) void NavigationWidget::setShown(bool b)
{ {
if (m_shown == b) if (m_shown == b)

View File

@@ -92,6 +92,8 @@ public:
void saveSettings(QSettings *settings); void saveSettings(QSettings *settings);
void restoreSettings(QSettings *settings); void restoreSettings(QSettings *settings);
void closeSubWidgets();
bool isShown() const; bool isShown() const;
void setShown(bool b); void setShown(bool b);