]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/sidebartreeview.cpp
KUIT adaptions for groups, checkboxes and radiobuttons
[dolphin.git] / src / sidebartreeview.cpp
index a40d26c132058e78f15da297d5f2a46664b33f5c..92e8e2908f63116abb732385b06a5990582e0ebc 100644 (file)
 
 #include "sidebartreeview.h"
 
+#include "dolphincontroller.h"
+
 #include <kdirmodel.h>
 #include <kfileitemdelegate.h>
-
-#include <QtGui/QKeyEvent>
-#include <QtGui/QHeaderView>
+#include <QKeyEvent>
+#include <QPainter>
+#include <QHeaderView>
 
 SidebarTreeView::SidebarTreeView(QWidget* parent) :
-    QTreeView(parent)
+    QTreeView(parent),
+    m_dragging(false)
 {
     setAcceptDrops(true);
     setUniformRowHeights(true);
@@ -40,6 +43,10 @@ SidebarTreeView::SidebarTreeView(QWidget* parent) :
 
     viewport()->setAttribute(Qt::WA_Hover);
 
+    QPalette palette = viewport()->palette();
+    palette.setColor(viewport()->backgroundRole(), Qt::transparent);
+    viewport()->setPalette(palette);
+
     KFileItemDelegate* delegate = new KFileItemDelegate(this);
     setItemDelegate(delegate);
 }
@@ -70,6 +77,27 @@ void SidebarTreeView::dragEnterEvent(QDragEnterEvent* event)
         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);
+}
+
+void SidebarTreeView::dragMoveEvent(QDragMoveEvent* event)
+{
+    QTreeView::dragMoveEvent(event);
+
+    // TODO: remove this code when the issue #160611 is solved in Qt 4.4
+    const QModelIndex index = indexAt(event->pos());
+    setDirtyRegion(m_dropRect);
+    m_dropRect = visualRect(index);
+    setDirtyRegion(m_dropRect);
 }
 
 void SidebarTreeView::dropEvent(QDropEvent* event)
@@ -84,6 +112,18 @@ 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);
+        DolphinController::drawHoverIndication(viewport(), m_dropRect, brush);
+    }
 }
 
 #include "sidebartreeview.moc"