]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/sidebartreeview.cpp
Keep consistent all views. Peter, if you decide to revert the change that David did...
[dolphin.git] / src / sidebartreeview.cpp
index 4d8c2cc560d1111572dde69b9f705113c024a255..af676541a6b60a46c7cfbe7828b0dc6211a4b1f7 100644 (file)
 
 #include "dolphincontroller.h"
 #include "dolphinmodel.h"
+#include "draganddrophelper.h"
 
 #include <kfileitemdelegate.h>
 #include <QKeyEvent>
 #include <QPainter>
 #include <QHeaderView>
+#include <QScrollBar>
 
 SidebarTreeView::SidebarTreeView(QWidget* parent) :
     QTreeView(parent),
@@ -40,11 +42,15 @@ SidebarTreeView::SidebarTreeView(QWidget* parent) :
     setDragDropMode(QAbstractItemView::DragDrop);
     setDropIndicatorShown(false);
     setAutoExpandDelay(300);
-    // TODO: enable ScrollPerPixel again as soon as a Qt-patch
-    // is supplied which fixes a possible crash
-    // (see http://lists.kde.org/?l=kde-core-devel&m=119077433611662&w=2)
-    //setHorizontalScrollMode(QAbstractItemView::ScrollPerPixel);
-    //setVerticalScrollMode(QAbstractItemView::ScrollPerPixel);
+
+// 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);
 
@@ -74,10 +80,30 @@ bool SidebarTreeView::event(QEvent* event)
         hideColumn(DolphinModel::Tags);
         header()->hide();
     }
+    else if (event->type() == QEvent::UpdateRequest) {
+        // 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))
+        // a wheel movement will scroll 1 item
+        if (model()->rowCount() > 0) {
+            verticalScrollBar()->setSingleStep(sizeHintForRow(0) / 3);
+        }
+#endif
+    }
+    else if (event->type() == QEvent::MetaCall) {
+        resizeColumnToContents(DolphinModel::Name);
+    }
 
     return QTreeView::event(event);
 }
 
+void SidebarTreeView::startDrag(Qt::DropActions supportedActions)
+{
+    DragAndDropHelper::startDrag(this, supportedActions);
+}
+
 void SidebarTreeView::dragEnterEvent(QDragEnterEvent* event)
 {
     if (event->mimeData()->hasUrls()) {
@@ -129,7 +155,7 @@ void SidebarTreeView::paintEvent(QPaintEvent* 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);
-        DolphinController::drawHoverIndication(viewport(), m_dropRect, brush);
+        DragAndDropHelper::drawHoverIndication(this, m_dropRect, brush);
     }
 }