#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);
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);
}
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)
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"