]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/sidebartreeview.cpp
fix crash when e. g. right clicking on a file using SMB inside Konqueror
[dolphin.git] / src / sidebartreeview.cpp
index 3567c35d6b11676ac01c88c536cb35ff25ad5ea1..a2cc3adc3f172ee1aa8f15752124715ae1266379 100644 (file)
@@ -30,8 +30,7 @@
 #include <QScrollBar>
 
 SidebarTreeView::SidebarTreeView(QWidget* parent) :
-    QTreeView(parent),
-    m_dragging(false)
+    KTreeView(parent)
 {
     setAcceptDrops(true);
     setUniformRowHeights(true);
@@ -43,14 +42,8 @@ SidebarTreeView::SidebarTreeView(QWidget* parent) :
     setDropIndicatorShown(false);
     setAutoExpandDelay(300);
 
-// TODO: Remove this check when 4.3.2 is released and KDE requires it... this
-//       check avoids a division by zero happening on versions before 4.3.1.
-//       Right now KDE in theory can be shipped with Qt 4.3.0 and above.
-//       ereslibre
-#if (QT_VERSION >= QT_VERSION_CHECK(4, 3, 2) || defined(QT_KDE_QT_COPY))
     setVerticalScrollMode(QListView::ScrollPerPixel);
     setHorizontalScrollMode(QListView::ScrollPerPixel);
-#endif
 
     viewport()->setAttribute(Qt::WA_Hover);
 
@@ -80,18 +73,12 @@ bool SidebarTreeView::event(QEvent* event)
         hideColumn(DolphinModel::Tags);
         header()->hide();
     }
-// TODO: Remove this check when 4.3.2 is released and KDE requires it... this
-//       check avoids a division by zero happening on versions before 4.3.1.
-//       Right now KDE in theory can be shipped with Qt 4.3.0 and above.
-//       ereslibre
-#if (QT_VERSION >= QT_VERSION_CHECK(4, 3, 2) || defined(QT_KDE_QT_COPY))
     else if (event->type() == QEvent::UpdateRequest) {
         // a wheel movement will scroll 1 item
         if (model()->rowCount() > 0) {
             verticalScrollBar()->setSingleStep(sizeHintForRow(0) / 3);
         }
     }
-#endif
 
     return QTreeView::event(event);
 }
@@ -103,19 +90,15 @@ void SidebarTreeView::startDrag(Qt::DropActions supportedActions)
 
 void SidebarTreeView::dragEnterEvent(QDragEnterEvent* event)
 {
+    QTreeView::dragEnterEvent(event);
     if (event->mimeData()->hasUrls()) {
         event->acceptProposedAction();
     }
-    QTreeView::dragEnterEvent(event);
-    m_dragging = true;
 }
 
 void SidebarTreeView::dragLeaveEvent(QDragLeaveEvent* event)
 {
     QTreeView::dragLeaveEvent(event);
-
-    // TODO: remove this code when the issue #160611 is solved in Qt 4.4
-    m_dragging = false;
     setDirtyRegion(m_dropRect);
 }
 
@@ -128,6 +111,11 @@ void SidebarTreeView::dragMoveEvent(QDragMoveEvent* event)
     setDirtyRegion(m_dropRect);
     m_dropRect = visualRect(index);
     setDirtyRegion(m_dropRect);
+
+    if (event->mimeData()->hasUrls()) {
+        // accept url drops, independently from the destination item
+        event->acceptProposedAction();
+    }
 }
 
 void SidebarTreeView::dropEvent(QDropEvent* event)
@@ -142,18 +130,6 @@ void SidebarTreeView::dropEvent(QDropEvent* event)
             emit urlsDropped(urls, index);
         }
     }
-    m_dragging = false;
-}
-
-void SidebarTreeView::paintEvent(QPaintEvent* event)
-{
-    QTreeView::paintEvent(event);
-
-    // TODO: remove this code when the issue #160611 is solved in Qt 4.4
-    if (m_dragging) {
-        const QBrush& brush = palette().brush(QPalette::Normal, QPalette::Highlight);
-        DragAndDropHelper::drawHoverIndication(viewport(), m_dropRect, brush);
-    }
 }
 
 #include "sidebartreeview.moc"