]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/kitemviews/kitemlistwidget.cpp
Merge branch 'Applications/14.12'
[dolphin.git] / src / kitemviews / kitemlistwidget.cpp
index 45329afb335b555f62b69cb14469005421490076..97a14763ce3cc49f252364691812c47c40ee7b9e 100644 (file)
@@ -279,6 +279,13 @@ bool KItemListWidget::isHovered() const
     return m_hovered;
 }
 
+void KItemListWidget::setHoverPosition(const QPointF& pos)
+{
+    if (m_selectionToggle) {
+        m_selectionToggle->setHovered(selectionToggleRect().contains(pos));
+    }
+}
+
 void KItemListWidget::setAlternateBackground(bool enable)
 {
     if (m_alternateBackground != enable) {
@@ -369,9 +376,18 @@ QPixmap KItemListWidget::createDragPixmap(const QStyleOptionGraphicsItem* option
     QPainter painter(&pixmap);
 
     const bool oldAlternateBackground = m_alternateBackground;
+    const bool wasSelected = m_selected;
+    const bool wasHovered = m_hovered;
+
     setAlternateBackground(false);
+    setSelected(false);
+    setHovered(false);
+
     paint(&painter, option, widget);
+
     setAlternateBackground(oldAlternateBackground);
+    setSelected(wasSelected);
+    setHovered(wasHovered);
 
     return pixmap;
 }
@@ -442,6 +458,12 @@ void KItemListWidget::resizeEvent(QGraphicsSceneResizeEvent* event)
 {
     QGraphicsWidget::resizeEvent(event);
     clearHoverCache();
+
+    if (m_selectionToggle) {
+        const QRectF& toggleRect = selectionToggleRect();
+        m_selectionToggle->setPos(toggleRect.topLeft());
+        m_selectionToggle->resize(toggleRect.size());
+    }
 }
 
 qreal KItemListWidget::hoverOpacity() const
@@ -451,8 +473,8 @@ qreal KItemListWidget::hoverOpacity() const
 
 void KItemListWidget::slotHoverAnimationFinished()
 {
-    if (!m_hovered) {
-        delete m_selectionToggle;
+    if (!m_hovered && m_selectionToggle) {
+        m_selectionToggle->deleteLater();
         m_selectionToggle = 0;
     }
 }
@@ -500,7 +522,7 @@ void KItemListWidget::drawItemStyleOption(QPainter* painter, QWidget* widget, QS
     viewItemOption.state = styleState;
     viewItemOption.viewItemPosition = QStyleOptionViewItemV4::OnlyOne;
     viewItemOption.showDecorationSelected = true;
-    viewItemOption.rect = textRect().toRect();
+    viewItemOption.rect = selectionRect().toRect();
     widget->style()->drawPrimitive(QStyle::PE_PanelItemViewItem, &viewItemOption, painter, widget);
 }