]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/dolphincolumnwidget.cpp
The first columns model and selection model should be the same as the view's model...
[dolphin.git] / src / dolphincolumnwidget.cpp
index 1a7f712f38e2a3681f81fd941eab1239c4409973..abd236c7ddb59edc3478c4d6eb417adbc66055d5 100644 (file)
@@ -115,18 +115,16 @@ DolphinColumnWidget::DolphinColumnWidget(QWidget* parent,
     m_dirLister->setShowingDotFiles(showHiddenFiles);
     connect(m_dirLister, SIGNAL(newItems(const KFileItemList&)),
             this, SLOT(generatePreviews(const KFileItemList&)));
+}
 
-    m_dolphinModel = new DolphinModel(this);
-    m_dolphinModel->setDirLister(m_dirLister);
-    m_dolphinModel->setDropsAllowed(DolphinModel::DropOnDirectory);
-
-    m_proxyModel = new DolphinSortFilterProxyModel(this);
-    m_proxyModel->setSourceModel(m_dolphinModel);
-
-    setModel(m_proxyModel);
+void DolphinColumnWidget::setModel ( QAbstractItemModel * model )
+{
+    m_proxyModel = dynamic_cast<DolphinSortFilterProxyModel *>(model);
+    if(m_proxyModel)
+        m_dolphinModel = dynamic_cast<DolphinModel *>(m_proxyModel->sourceModel());
     new KMimeTypeResolver(this, m_dolphinModel);
-
-    m_dirLister->openUrl(url, KDirLister::NoFlags);
+    m_dirLister->openUrl(m_url, KDirLister::NoFlags);
+    QListView::setModel(m_proxyModel);
 }
 
 DolphinColumnWidget::~DolphinColumnWidget()
@@ -227,10 +225,13 @@ void DolphinColumnWidget::dragMoveEvent(QDragMoveEvent* event)
     // TODO: remove this code when the issue #160611 is solved in Qt 4.4
     const QModelIndex index = indexAt(event->pos());
     setDirtyRegion(m_dropRect);
-    if (itemForIndex(index).isDir()) {
-        m_dropRect = visualRect(index);
-    } else {
-        m_dropRect.setSize(QSize()); // set as invalid
+
+    m_dropRect.setSize(QSize()); // set as invalid
+    if (index.isValid()) {
+        const KFileItem item = itemForIndex(index);
+        if (!item.isNull() && item.isDir()) {
+            m_dropRect = visualRect(index);
+        }
     }
     setDirtyRegion(m_dropRect);
 }