X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/e46003aca365ca66ce7c7cccd47fb52d1da2fb91..56836b0e7a9d466db6412534f2bdb5ed546d0cb7:/src/draganddrophelper.cpp diff --git a/src/draganddrophelper.cpp b/src/draganddrophelper.cpp index d9188675a..7095346bc 100644 --- a/src/draganddrophelper.cpp +++ b/src/draganddrophelper.cpp @@ -18,6 +18,7 @@ ***************************************************************************/ #include "draganddrophelper.h" +#include "dolphiniconsview.h" #include #include @@ -49,18 +50,24 @@ void DragAndDropHelper::startDrag(QAbstractItemView* itemView, Qt::DropActions s const KFileItem item = dirModel->itemForIndex(index); pixmap = item.pixmap(KIconLoader::SizeMedium, KIconLoader::SizeMedium); } else { - pixmap = KIcon("item-drag-multiple").pixmap(KIconLoader::SizeMedium, KIconLoader::SizeMedium); + pixmap = KIcon("document-multiple").pixmap(KIconLoader::SizeMedium, KIconLoader::SizeMedium); } drag->setPixmap(pixmap); drag->setMimeData(data); - drag->exec(supportedActions); + drag->exec(supportedActions, Qt::IgnoreAction); } } -void DragAndDropHelper::drawHoverIndication(QWidget* widget, +void DragAndDropHelper::drawHoverIndication(QAbstractItemView* itemView, const QRect& bounds, const QBrush& brush) { + if (bounds.isEmpty()) { + return; + } + + QWidget* widget = itemView->viewport(); + QPainter painter(widget); painter.save(); QBrush blendedBrush(brush); @@ -68,18 +75,22 @@ void DragAndDropHelper::drawHoverIndication(QWidget* widget, color.setAlpha(64); blendedBrush.setColor(color); - const int radius = 10; - QPainterPath path(QPointF(bounds.left(), bounds.top() + radius)); - path.quadTo(bounds.left(), bounds.top(), bounds.left() + radius, bounds.top()); - path.lineTo(bounds.right() - radius, bounds.top()); - path.quadTo(bounds.right(), bounds.top(), bounds.right(), bounds.top() + radius); - path.lineTo(bounds.right(), bounds.bottom() - radius); - path.quadTo(bounds.right(), bounds.bottom(), bounds.right() - radius, bounds.bottom()); - path.lineTo(bounds.left() + radius, bounds.bottom()); - path.quadTo(bounds.left(), bounds.bottom(), bounds.left(), bounds.bottom() - radius); - path.closeSubpath(); + if (dynamic_cast(itemView)) { + const int radius = 10; + QPainterPath path(QPointF(bounds.left(), bounds.top() + radius)); + path.quadTo(bounds.left(), bounds.top(), bounds.left() + radius, bounds.top()); + path.lineTo(bounds.right() - radius, bounds.top()); + path.quadTo(bounds.right(), bounds.top(), bounds.right(), bounds.top() + radius); + path.lineTo(bounds.right(), bounds.bottom() - radius); + path.quadTo(bounds.right(), bounds.bottom(), bounds.right() - radius, bounds.bottom()); + path.lineTo(bounds.left() + radius, bounds.bottom()); + path.quadTo(bounds.left(), bounds.bottom(), bounds.left(), bounds.bottom() - radius); + path.closeSubpath(); - painter.setRenderHint(QPainter::Antialiasing); - painter.fillPath(path, blendedBrush); + painter.setRenderHint(QPainter::Antialiasing); + painter.fillPath(path, blendedBrush); + } else { + painter.fillRect(bounds, blendedBrush); + } painter.restore(); }