scroll around while dragging items on the extender, to make possible drop the item on any point

svn path=/trunk/KDE/kdelibs/; revision=1186504
This commit is contained in:
Marco Martin 2010-10-16 17:41:59 +00:00
parent 5d452a0429
commit 6ad3371e9a
3 changed files with 12 additions and 0 deletions

View File

@ -421,6 +421,8 @@ void Extender::dragMoveEvent(QGraphicsSceneDragDropEvent *event)
if (mimeData) {
itemHoverMoveEvent(mimeData->extenderItem(), event->pos());
d->setPositionFromDragPosition(event->scenePos());
}
}
}
@ -837,6 +839,13 @@ void ExtenderPrivate::adjustMinimumSize()
scrollWidget->setMinimumHeight(qMin((qreal)300, mainWidget->effectiveSizeHint(Qt::MinimumSize).height()));
}
void ExtenderPrivate::setPositionFromDragPosition(const QPointF &pos)
{
const qreal ratio = (q->mapFromScene(pos).y()/scrollWidget->size().height());
mainWidget->setPos(mainWidget->pos().x(), 30 + (ratio *(scrollWidget->size().height() - mainWidget->size().height() - 30)));
}
ExtenderGroup *ExtenderPrivate::findGroup(const QString &name) const
{
foreach (ExtenderItem *item, attachedExtenderItems) {

View File

@ -266,6 +266,8 @@ void ExtenderGroup::dragMoveEvent(QGraphicsSceneDragDropEvent *event)
d->spacerWidget = widget;
}
d->layout->insertItem(insertIndex, d->spacerWidget);
extender()->d->setPositionFromDragPosition(event->scenePos());
}
}
}

View File

@ -75,6 +75,7 @@ class ExtenderPrivate
void delayItemAddedEvent();
void updateEmptyExtenderLabel();
void adjustMinimumSize();
void setPositionFromDragPosition(const QPointF &pos);
ExtenderGroup *findGroup(const QString &name) const;
Extender *q;