X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/e9d29bcf30ccbd7c76ba37ce9efcfac1649fc46e..d389f50d854759ea6ecab064a58235f491f8c9b5:/src/kitemviews/kitemlistwidget.cpp diff --git a/src/kitemviews/kitemlistwidget.cpp b/src/kitemviews/kitemlistwidget.cpp index 45329afb3..97a14763c 100644 --- a/src/kitemviews/kitemlistwidget.cpp +++ b/src/kitemviews/kitemlistwidget.cpp @@ -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); }