backport drag treshold on dragHandles

svn path=/branches/KDE/4.4/kdelibs/; revision=1084810
This commit is contained in:
Marco Martin 2010-02-03 20:10:32 +00:00
parent 0d51b21cab
commit d24d0eaeed

View File

@ -597,15 +597,31 @@ bool ScrollWidget::eventFilter(QObject *watched, QEvent *event)
if (event->type() == QEvent::GraphicsSceneMousePress ||
event->type() == QEvent::GraphicsSceneMouseMove ||
event->type() == QEvent::GraphicsSceneMouseRelease) {
if (scene()) {
QGraphicsSceneMouseEvent *me = static_cast<QGraphicsSceneMouseEvent *>(event);
if (event->type() == QEvent::GraphicsSceneMousePress) {
d->dragHandleClicked = me->scenePos();
}
d->dragging = (d->dragging | (d->dragHandleClicked.toPoint() - me->scenePos().toPoint()).manhattanLength() > (KGlobalSettings::dndEventDelay()));
if (scene() && event->type() != QEvent::GraphicsSceneMouseMove) {
scene()->sendEvent(this, event);
}
QGraphicsSceneMouseEvent *me = static_cast<QGraphicsSceneMouseEvent *>(event);
if (event->type() == QEvent::GraphicsSceneMousePress) {
d->dragHandleClicked = me->scenePos();
} else if (event->type() == QEvent::GraphicsSceneMouseRelease &&
(d->dragHandleClicked.toPoint() - me->scenePos().toPoint()).manhattanLength() > KGlobalSettings::dndEventDelay()) {
if (!d->dragging) {
return false;
}
if (scene() && event->type() == QEvent::GraphicsSceneMouseMove) {
scene()->sendEvent(this, event);
}
if (event->type() == QEvent::GraphicsSceneMouseRelease) {
d->dragging = false;
return true;
}
}