]> cloud.milkyroute.net Git - dolphin.git/commitdiff
Provide a hover information when dragging items above other items. TODO: this code...
authorPeter Penz <peter.penz19@gmail.com>
Sat, 2 Jun 2007 17:35:00 +0000 (17:35 +0000)
committerPeter Penz <peter.penz19@gmail.com>
Sat, 2 Jun 2007 17:35:00 +0000 (17:35 +0000)
svn path=/trunk/KDE/kdebase/apps/; revision=670851

src/sidebartreeview.cpp
src/sidebartreeview.h

index a40d26c132058e78f15da297d5f2a46664b33f5c..b76cd6d2d34fbd055be604ed714b397256658ce2 100644 (file)
 #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);
@@ -70,6 +72,18 @@ void SidebarTreeView::dragEnterEvent(QDragEnterEvent* event)
         event->acceptProposedAction();
     }
     QTreeView::dragEnterEvent(event);
+    m_dragging = true;
+}
+
+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 +98,24 @@ void SidebarTreeView::dropEvent(QDropEvent* event)
             emit urlsDropped(urls, index);
         }
     }
+    m_dragging = false;
+}
+
+void SidebarTreeView::paintEvent(QPaintEvent* event)
+{
+    QTreeView::paintEvent(event);
+
+    if (m_dragging) {
+        // TODO: remove this code when the issue #160611 is solved in Qt 4.4
+        QPainter painter(viewport());
+        painter.save();
+        QBrush brush(palette().brush(QPalette::Normal, QPalette::Highlight));
+        QColor color = brush.color();
+        color.setAlpha(64);
+        brush.setColor(color);
+        painter.fillRect(m_dropRect, brush);
+        painter.restore();
+    }
 }
 
 #include "sidebartreeview.moc"
index 045a256af20989a88352d48315b96f8f3164f026..7c4eba7775926c992042ecc68b9fd85a880663cb 100644 (file)
@@ -47,8 +47,13 @@ signals:
 protected:
     virtual bool event(QEvent* event);
     virtual void dragEnterEvent(QDragEnterEvent* event);
+    virtual void dragMoveEvent(QDragMoveEvent* event);
     virtual void dropEvent(QDropEvent* event);
+    virtual void paintEvent(QPaintEvent* event);
 
+private:
+    bool m_dragging;   // TODO: remove this property when the issue #160611 is solved in Qt 4.4
+    QRect m_dropRect;  // TODO: remove this property when the issue #160611 is solved in Qt 4.4
 };
 
 #endif