From e9d29bcf30ccbd7c76ba37ce9efcfac1649fc46e Mon Sep 17 00:00:00 2001 From: Peter Penz Date: Fri, 18 May 2012 23:21:49 +0200 Subject: Enable basic drag and drop support for the Places Panel The dropping has not been implemented yet, however in the context of this step the creating of the drag-pixmap is now forwarded to the item-widgets. This allows creating some optimized dragging-pixmaps e.g. for the details-view, where only the name and icon should be provided as drag-pixmap. --- src/kitemviews/kstandarditemlistwidget.cpp | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) (limited to 'src/kitemviews/kstandarditemlistwidget.cpp') diff --git a/src/kitemviews/kstandarditemlistwidget.cpp b/src/kitemviews/kstandarditemlistwidget.cpp index 3f470b8cf..0cd11d363 100644 --- a/src/kitemviews/kstandarditemlistwidget.cpp +++ b/src/kitemviews/kstandarditemlistwidget.cpp @@ -405,6 +405,32 @@ QRectF KStandardItemListWidget::selectionToggleRect() const return QRectF(pos, QSizeF(toggleSize, toggleSize)); } +QPixmap KStandardItemListWidget::createDragPixmap(const QStyleOptionGraphicsItem* option, + QWidget* widget) +{ + QPixmap pixmap = KItemListWidget::createDragPixmap(option, widget); + if (m_layout != DetailsLayout || styleOption().extendedSelectionRegion) { + return pixmap; + } + + // Only return the content of the text-column as pixmap + const int leftClip = m_pixmapPos.x(); + + const TextInfo* textInfo = m_textInfo.value("text"); + const int rightClip = textInfo->pos.x() + + textInfo->staticText.size().width() + + 2 * styleOption().padding; + + QPixmap clippedPixmap(rightClip - leftClip + 1, pixmap.height()); + clippedPixmap.fill(Qt::transparent); + + QPainter painter(&clippedPixmap); + painter.drawPixmap(-leftClip, 0, pixmap); + + return clippedPixmap; +} + + KItemListWidgetInformant* KStandardItemListWidget::createInformant() { return new KStandardItemListWidgetInformant(); -- cgit v1.3