Fix memory leak.

Task-number: QTCREATORBUG-2335
This commit is contained in:
kh1
2010-09-15 11:02:45 +02:00
parent d207c8cdcb
commit ee3ad439a8
2 changed files with 17 additions and 13 deletions

View File

@@ -63,16 +63,6 @@ OpenPagesManager::OpenPagesManager(QObject *parent)
m_instance = this; m_instance = this;
m_model = new OpenPagesModel(this); m_model = new OpenPagesModel(this);
m_openPagesWidget = new OpenPagesWidget(m_model);
m_openPagesWidget->setFrameStyle(QFrame::NoFrame);
connect(m_openPagesWidget, SIGNAL(setCurrentPage(QModelIndex)), this,
SLOT(setCurrentPage(QModelIndex)));
connect(m_openPagesWidget, SIGNAL(closePage(QModelIndex)), this,
SLOT(closePage(QModelIndex)));
connect(m_openPagesWidget, SIGNAL(closePagesExcept(QModelIndex)), this,
SLOT(closePagesExcept(QModelIndex)));
m_comboBox = new QComboBox; m_comboBox = new QComboBox;
m_comboBox->setModel(m_model); m_comboBox->setModel(m_model);
m_comboBox->setMinimumContentsLength(40); m_comboBox->setMinimumContentsLength(40);
@@ -102,6 +92,16 @@ OpenPagesManager &OpenPagesManager::instance()
QWidget *OpenPagesManager::openPagesWidget() const QWidget *OpenPagesManager::openPagesWidget() const
{ {
if (!m_openPagesWidget) {
m_openPagesWidget = new OpenPagesWidget(m_model);
m_openPagesWidget->setFrameStyle(QFrame::NoFrame);
connect(m_openPagesWidget, SIGNAL(setCurrentPage(QModelIndex)), this,
SLOT(setCurrentPage(QModelIndex)));
connect(m_openPagesWidget, SIGNAL(closePage(QModelIndex)), this,
SLOT(closePage(QModelIndex)));
connect(m_openPagesWidget, SIGNAL(closePagesExcept(QModelIndex)), this,
SLOT(closePagesExcept(QModelIndex)));
}
return m_openPagesWidget; return m_openPagesWidget;
} }
@@ -212,6 +212,7 @@ void OpenPagesManager::setCurrentPage(int index)
CentralWidget::instance()->setCurrentPage(m_model->pageAt(index)); CentralWidget::instance()->setCurrentPage(m_model->pageAt(index));
m_comboBox->setCurrentIndex(index); m_comboBox->setCurrentIndex(index);
if (m_openPagesWidget)
m_openPagesWidget->selectCurrentPage(); m_openPagesWidget->selectCurrentPage();
} }
@@ -223,6 +224,8 @@ void OpenPagesManager::setCurrentPage(const QModelIndex &index)
void OpenPagesManager::closeCurrentPage() void OpenPagesManager::closeCurrentPage()
{ {
if (!m_openPagesWidget)
return;
QModelIndexList indexes = m_openPagesWidget->selectionModel()->selectedRows(); QModelIndexList indexes = m_openPagesWidget->selectionModel()->selectedRows();
if (indexes.isEmpty()) if (indexes.isEmpty())
return; return;
@@ -283,6 +286,7 @@ void OpenPagesManager::removePage(int index)
CentralWidget::instance()->removePage(index); CentralWidget::instance()->removePage(index);
emit pagesChanged(); emit pagesChanged();
if (m_openPagesWidget)
m_openPagesWidget->selectCurrentPage(); m_openPagesWidget->selectCurrentPage();
} }

View File

@@ -92,7 +92,7 @@ private slots:
private: private:
QComboBox *m_comboBox; QComboBox *m_comboBox;
OpenPagesModel *m_model; OpenPagesModel *m_model;
OpenPagesWidget *m_openPagesWidget; mutable OpenPagesWidget *m_openPagesWidget;
OpenPagesSwitcher *m_openPagesSwitcher; OpenPagesSwitcher *m_openPagesSwitcher;
static OpenPagesManager *m_instance; static OpenPagesManager *m_instance;