]> cloud.milkyroute.net Git - dolphin.git/commitdiff
Fix crash when closing Dolphin during generating previews
authorPeter Penz <peter.penz19@gmail.com>
Mon, 30 Apr 2012 16:54:12 +0000 (18:54 +0200)
committerPeter Penz <peter.penz19@gmail.com>
Mon, 30 Apr 2012 16:55:48 +0000 (18:55 +0200)
BUG: 299108
FIXED-IN: 4.9.0

src/kitemviews/kfileitemlistview.cpp
src/kitemviews/kitemlistcontroller.cpp
src/kitemviews/kitemlistview.cpp

index 14547fc7be31c1b70db5aee17581902c136f7dd8..b5cc343f40d73a27ee45159f5c8d5564c0c8b03b 100644 (file)
@@ -66,8 +66,6 @@ KFileItemListView::KFileItemListView(QGraphicsWidget* parent) :
 
 KFileItemListView::~KFileItemListView()
 {
 
 KFileItemListView::~KFileItemListView()
 {
-    delete m_modelRolesUpdater;
-    m_modelRolesUpdater = 0;
 }
 
 void KFileItemListView::setPreviewsShown(bool show)
 }
 
 void KFileItemListView::setPreviewsShown(bool show)
index 1c35072e528654599ceb37a3a2711ae6e88068ee..6045f5020c1e147741554c6e7d00b2219efadf3a 100644 (file)
@@ -75,12 +75,10 @@ KItemListController::KItemListController(KItemModelBase* model, KItemListView* v
 KItemListController::~KItemListController()
 {
     setView(0);
 KItemListController::~KItemListController()
 {
     setView(0);
-    delete m_view;
-    m_view = 0;
+    Q_ASSERT(!m_view);
 
     setModel(0);
 
     setModel(0);
-    delete m_model;
-    m_model = 0;
+    Q_ASSERT(!m_model);
 }
 
 void KItemListController::setModel(KItemModelBase* model)
 }
 
 void KItemListController::setModel(KItemModelBase* model)
@@ -90,6 +88,10 @@ void KItemListController::setModel(KItemModelBase* model)
     }
 
     KItemModelBase* oldModel = m_model;
     }
 
     KItemModelBase* oldModel = m_model;
+    if (oldModel) {
+        oldModel->deleteLater();
+    }
+
     m_model = model;
     if (m_model) {
         m_model->setParent(this);
     m_model = model;
     if (m_model) {
         m_model->setParent(this);
@@ -123,11 +125,13 @@ void KItemListController::setView(KItemListView* view)
     KItemListView* oldView = m_view;
     if (oldView) {
         disconnect(oldView, SIGNAL(scrollOffsetChanged(qreal,qreal)), this, SLOT(slotViewScrollOffsetChanged(qreal,qreal)));
     KItemListView* oldView = m_view;
     if (oldView) {
         disconnect(oldView, SIGNAL(scrollOffsetChanged(qreal,qreal)), this, SLOT(slotViewScrollOffsetChanged(qreal,qreal)));
+        oldView->deleteLater();
     }
 
     m_view = view;
 
     if (m_view) {
     }
 
     m_view = view;
 
     if (m_view) {
+        m_view->setParent(this);
         m_view->setController(this);
         m_view->setModel(m_model);
         connect(m_view, SIGNAL(scrollOffsetChanged(qreal,qreal)), this, SLOT(slotViewScrollOffsetChanged(qreal,qreal)));
         m_view->setController(this);
         m_view->setModel(m_model);
         connect(m_view, SIGNAL(scrollOffsetChanged(qreal,qreal)), this, SLOT(slotViewScrollOffsetChanged(qreal,qreal)));
index 8ecd1e2126fc3cf58ed61a69f269c6c8f45aa198..48849a3c13c9880c7c6692c441d54067bf15b6a9 100644 (file)
@@ -761,13 +761,8 @@ void KItemListView::onControllerChanged(KItemListController* current, KItemListC
 
 void KItemListView::onModelChanged(KItemModelBase* current, KItemModelBase* previous)
 {
 
 void KItemListView::onModelChanged(KItemModelBase* current, KItemModelBase* previous)
 {
+    Q_UNUSED(current);
     Q_UNUSED(previous);
     Q_UNUSED(previous);
-
-    m_sizeHintResolver->clearCache();
-    const int itemCount = current->count();
-    if (itemCount > 0) {
-        m_sizeHintResolver->itemsInserted(0, itemCount);
-    }
 }
 
 void KItemListView::onScrollOrientationChanged(Qt::Orientation current, Qt::Orientation previous)
 }
 
 void KItemListView::onScrollOrientationChanged(Qt::Orientation current, Qt::Orientation previous)
@@ -1446,6 +1441,8 @@ void KItemListView::setModel(KItemModelBase* model)
                    this,    SLOT(slotSortRoleChanged(QByteArray,QByteArray)));
     }
 
                    this,    SLOT(slotSortRoleChanged(QByteArray,QByteArray)));
     }
 
+    m_sizeHintResolver->clearCache();
+
     m_model = model;
     m_layouter->setModel(model);
     m_grouped = model->groupedSorting();
     m_model = model;
     m_layouter->setModel(model);
     m_grouped = model->groupedSorting();
@@ -1468,6 +1465,7 @@ void KItemListView::setModel(KItemModelBase* model)
 
         const int itemCount = m_model->count();
         if (itemCount > 0) {
 
         const int itemCount = m_model->count();
         if (itemCount > 0) {
+            m_sizeHintResolver->itemsInserted(0, itemCount);
             slotItemsInserted(KItemRangeList() << KItemRange(0, itemCount));
         }
     }
             slotItemsInserted(KItemRangeList() << KItemRange(0, itemCount));
         }
     }