┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Penz <[email protected]>2007-06-02 17:35:00 +0000
committerPeter Penz <[email protected]>2007-06-02 17:35:00 +0000
commitc5a871a6a25d367d80d9b2d9a85fcf8b32f51538 (patch)
tree2739dd2e2171e6e95d6a647a5be6228781cb5796
parente78615f172a2b9f549da6eef2b343a472d42f45f (diff)
Provide a hover information when dragging items above other items. TODO: this code can be removed again when issue #160611 is solved in Qt 4.4.
svn path=/trunk/KDE/kdebase/apps/; revision=670851
-rw-r--r--src/sidebartreeview.cpp38
-rw-r--r--src/sidebartreeview.h5
2 files changed, 40 insertions, 3 deletions
diff --git a/src/sidebartreeview.cpp b/src/sidebartreeview.cpp
index a40d26c13..b76cd6d2d 100644
--- a/src/sidebartreeview.cpp
+++ b/src/sidebartreeview.cpp
@@ -22,11 +22,13 @@
#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"
diff --git a/src/sidebartreeview.h b/src/sidebartreeview.h
index 045a256af..7c4eba777 100644
--- a/src/sidebartreeview.h
+++ b/src/sidebartreeview.h
@@ -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