fix crash when opening a lot of columns and going back very fast by clicking on each breadcrumb of the URL navigator

BUG: 164304

svn path=/trunk/KDE/kdebase/apps/; revision=837486
This commit is contained in:
Peter Penz 2008-07-24 19:50:40 +00:00
parent 5d7de69ae6
commit 8a51f70377
3 changed files with 24 additions and 5 deletions

View file

@ -190,7 +190,7 @@ void DolphinColumnView::showColumn(const KUrl& url)
QList<DolphinColumnWidget*>::iterator start = m_columns.begin() + columnIndex;
QList<DolphinColumnWidget*>::iterator end = m_columns.end();
for (QList<DolphinColumnWidget*>::iterator it = start; it != end; ++it) {
(*it)->deleteLater();
deleteColumn(*it);
}
m_columns.erase(start, end);
@ -594,7 +594,7 @@ void DolphinColumnView::removeAllColumns()
QList<DolphinColumnWidget*>::iterator start = m_columns.begin() + 1;
QList<DolphinColumnWidget*>::iterator end = m_columns.end();
for (QList<DolphinColumnWidget*>::iterator it = start; it != end; ++it) {
(*it)->deleteLater();
deleteColumn(*it);
}
m_columns.erase(start, end);
m_index = 0;
@ -608,4 +608,15 @@ QPoint DolphinColumnView::columnPosition(DolphinColumnWidget* column, const QPoi
return QPoint(point.x() - topLeft.x(), point.y() - topLeft.y());
}
void DolphinColumnView::deleteColumn(DolphinColumnWidget* column)
{
if (column != 0) {
if (m_controller->itemView() == column) {
m_controller->setItemView(0);
}
column->disconnect();
column->deleteLater();
}
}
#include "dolphincolumnview.moc"

View file

@ -197,6 +197,12 @@ private:
*/
QPoint columnPosition(DolphinColumnWidget* column, const QPoint& point) const;
/**
* Deletes the column. If the itemview of the controller is set to the column,
* the controllers itemview is set to 0.
*/
void deleteColumn(DolphinColumnWidget* column);
private:
DolphinController* m_controller;
bool m_active;

View file

@ -57,9 +57,11 @@ void DolphinController::setItemView(QAbstractItemView* view)
m_itemView = view;
// TODO: this is a workaround until Qt-issue 176832 has been fixed
connect(m_itemView, SIGNAL(pressed(const QModelIndex&)),
this, SLOT(updateOpenTabState()));
if (m_itemView != 0) {
// TODO: this is a workaround until Qt-issue 176832 has been fixed
connect(m_itemView, SIGNAL(pressed(const QModelIndex&)),
this, SLOT(updateOpenTabState()));
}
}
void DolphinController::triggerUrlChangeRequest(const KUrl& url)