#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),
- m_dragging(false)
+ KTreeView(parent)
{
setAcceptDrops(true);
setUniformRowHeights(true);
setDropIndicatorShown(false);
setAutoExpandDelay(300);
+ setVerticalScrollMode(QListView::ScrollPerPixel);
+ setHorizontalScrollMode(QListView::ScrollPerPixel);
+
viewport()->setAttribute(Qt::WA_Hover);
QPalette palette = viewport()->palette();
hideColumn(DolphinModel::Tags);
header()->hide();
}
+ else if (event->type() == QEvent::UpdateRequest) {
+ // a wheel movement will scroll 1 item
+ if (model()->rowCount() > 0) {
+ verticalScrollBar()->setSingleStep(sizeHintForRow(0) / 3);
+ }
+ }
return QTreeView::event(event);
}
+void SidebarTreeView::startDrag(Qt::DropActions supportedActions)
+{
+ DragAndDropHelper::startDrag(this, supportedActions);
+}
+
void SidebarTreeView::dragEnterEvent(QDragEnterEvent* event)
{
+ QTreeView::dragEnterEvent(event);
if (event->mimeData()->hasUrls()) {
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);
}
setDirtyRegion(m_dropRect);
m_dropRect = visualRect(index);
setDirtyRegion(m_dropRect);
+
+ if (event->mimeData()->hasUrls()) {
+ // accept url drops, independently from the destination item
+ event->acceptProposedAction();
+ }
}
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"