From: Rafael Fernández López Date: Sun, 16 Dec 2007 20:56:24 +0000 (+0000) Subject: The drag&drop helper did not make the difference between the different kind of views... X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/commitdiff_plain/1e27cae3e58f0be65ea6c690f9144b0621829d2b?ds=sidebyside The drag&drop helper did not make the difference between the different kind of views. The only view that draws the hover indicator with rounded corners is the icon view mode. For that reason, the drop marker with the detailed view was drawn with rounded corners. For making it consistent, we draw the drop indicator as the hover effect indicator, so the only one that draws rounded corners is the icon one. CCMAIL: peter.penz@gmx.at svn path=/trunk/KDE/kdebase/apps/; revision=749225 --- diff --git a/src/dolphincolumnwidget.cpp b/src/dolphincolumnwidget.cpp index 7d29251ea..9a500df6b 100644 --- a/src/dolphincolumnwidget.cpp +++ b/src/dolphincolumnwidget.cpp @@ -290,7 +290,7 @@ void DolphinColumnWidget::paintEvent(QPaintEvent* event) // TODO: remove this code when the issue #160611 is solved in Qt 4.4 if (m_dragging) { const QBrush& brush = viewOptions().palette.brush(QPalette::Normal, QPalette::Highlight); - DragAndDropHelper::drawHoverIndication(viewport(), m_dropRect, brush); + DragAndDropHelper::drawHoverIndication(this, m_dropRect, brush); } } diff --git a/src/dolphindetailsview.cpp b/src/dolphindetailsview.cpp index 36ea99ad8..46752fc95 100644 --- a/src/dolphindetailsview.cpp +++ b/src/dolphindetailsview.cpp @@ -320,7 +320,7 @@ void DolphinDetailsView::paintEvent(QPaintEvent* event) // TODO: remove this code when the issue #160611 is solved in Qt 4.4 if (m_dragging) { const QBrush& brush = viewOptions().palette.brush(QPalette::Normal, QPalette::Highlight); - DragAndDropHelper::drawHoverIndication(viewport(), m_dropRect, brush); + DragAndDropHelper::drawHoverIndication(this, m_dropRect, brush); } } diff --git a/src/dolphiniconsview.cpp b/src/dolphiniconsview.cpp index 0c888d871..8d474f4bc 100644 --- a/src/dolphiniconsview.cpp +++ b/src/dolphiniconsview.cpp @@ -268,7 +268,7 @@ void DolphinIconsView::paintEvent(QPaintEvent* event) // TODO: remove this code when the issue #160611 is solved in Qt 4.4 if (m_dragging) { const QBrush& brush = viewOptions().palette.brush(QPalette::Normal, QPalette::Highlight); - DragAndDropHelper::drawHoverIndication(viewport(), m_dropRect, brush); + DragAndDropHelper::drawHoverIndication(this, m_dropRect, brush); } } diff --git a/src/draganddrophelper.cpp b/src/draganddrophelper.cpp index 39af6a3ce..0148f731b 100644 --- a/src/draganddrophelper.cpp +++ b/src/draganddrophelper.cpp @@ -18,6 +18,7 @@ ***************************************************************************/ #include "draganddrophelper.h" +#include "dolphiniconsview.h" #include #include @@ -57,7 +58,7 @@ void DragAndDropHelper::startDrag(QAbstractItemView* itemView, Qt::DropActions s } } -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(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(); } diff --git a/src/draganddrophelper.h b/src/draganddrophelper.h index 8003b75d2..8e1e4531f 100644 --- a/src/draganddrophelper.h +++ b/src/draganddrophelper.h @@ -44,7 +44,7 @@ public: static void startDrag(QAbstractItemView* itemView, Qt::DropActions supportedActions); // TODO: remove this method when the issue #160611 is solved in Qt 4.4 - static void drawHoverIndication(QWidget* widget, + static void drawHoverIndication(QAbstractItemView* itemView, const QRect& bounds, const QBrush& brush); }; diff --git a/src/sidebartreeview.cpp b/src/sidebartreeview.cpp index 9ab10a0b2..af676541a 100644 --- a/src/sidebartreeview.cpp +++ b/src/sidebartreeview.cpp @@ -155,7 +155,7 @@ void SidebarTreeView::paintEvent(QPaintEvent* 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); - DragAndDropHelper::drawHoverIndication(viewport(), m_dropRect, brush); + DragAndDropHelper::drawHoverIndication(this, m_dropRect, brush); } }