]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/draganddrophelper.cpp
As requested by Peter: upgrade version to 1.0
[dolphin.git] / src / draganddrophelper.cpp
index 39af6a3ce559a3add600c2d7683817081f0f4c42..7095346bce2f7b3afee060ebefe5e4109012f94e 100644 (file)
@@ -18,6 +18,7 @@
  ***************************************************************************/
 
 #include "draganddrophelper.h"
+#include "dolphiniconsview.h"
 
 #include <kdirmodel.h>
 #include <kicon.h>
@@ -53,11 +54,11 @@ void DragAndDropHelper::startDrag(QAbstractItemView* itemView, Qt::DropActions s
         }
         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)
 {
@@ -65,6 +66,8 @@ void DragAndDropHelper::drawHoverIndication(QWidget* widget,
         return;
     }
 
+    QWidget* widget = itemView->viewport();
+
     QPainter painter(widget);
     painter.save();
     QBrush blendedBrush(brush);
@@ -72,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<DolphinIconsView*>(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();
 }