┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Penz <[email protected]>2008-07-24 19:50:40 +0000
committerPeter Penz <[email protected]>2008-07-24 19:50:40 +0000
commit8a51f70377a5133984426b3fa999aee3859cfa5e (patch)
tree3db367b98f0714241642d184eb1b07d1b6146304
parent5d7de69ae6cc55dc5d6fb020e7809a74e9eeebd8 (diff)
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
-rw-r--r--src/dolphincolumnview.cpp15
-rw-r--r--src/dolphincolumnview.h6
-rw-r--r--src/dolphincontroller.cpp8
3 files changed, 24 insertions, 5 deletions
diff --git a/src/dolphincolumnview.cpp b/src/dolphincolumnview.cpp
index 957b2064f..6d4801aea 100644
--- a/src/dolphincolumnview.cpp
+++ b/src/dolphincolumnview.cpp
@@ -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"
diff --git a/src/dolphincolumnview.h b/src/dolphincolumnview.h
index 62569a082..24353ad34 100644
--- a/src/dolphincolumnview.h
+++ b/src/dolphincolumnview.h
@@ -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;
diff --git a/src/dolphincontroller.cpp b/src/dolphincontroller.cpp
index b00ca7160..375eb4403 100644
--- a/src/dolphincontroller.cpp
+++ b/src/dolphincontroller.cpp
@@ -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)