_clickTimer.setSingleShot(true);
connect(&_clickTimer, SIGNAL(timeout()), SLOT(clickTimeout()));
- _clickTimer.setInterval(QApplication::doubleClickInterval());
- _clickTimer.setSingleShot(true);
- connect(&_clickTimer, SIGNAL(timeout()), SLOT(clickTimeout()));
-
setItemIndexMethod(QGraphicsScene::NoIndex);
}
void ChatScene::mouseMoveEvent(QGraphicsSceneMouseEvent *event) {
if(event->buttons() == Qt::LeftButton) {
if(!_clickHandled && (event->scenePos() - _clickPos).toPoint().manhattanLength() >= QApplication::startDragDistance()) {
- if(_clickTimer.isActive()) _clickTimer.stop();
+ if(_clickTimer.isActive())
+ _clickTimer.stop();
if(_clickMode == SingleClick && isPosOverSelection(_clickPos))
initiateDrag(event->widget());
else {
updateSelection(event->scenePos());
emit mouseMoveWhileSelecting(event->scenePos());
event->accept();
- } else if(_clickHandled)
+ } else if(_clickHandled && _clickMode < DoubleClick)
QGraphicsScene::mouseMoveEvent(event);
} else
QGraphicsScene::mouseMoveEvent(event);
}
if(_clickMode != NoClick && _clickTimer.isActive()) {
_clickMode = (ClickMode)(_clickMode == TripleClick ? DoubleClick : _clickMode + 1);
- handleClick(Qt::LeftButton, event->scenePos());
+ handleClick(Qt::LeftButton, _clickPos);
} else {
_clickMode = SingleClick;
_clickPos = event->scenePos();
}
_clickTimer.start();
- } else if(event->buttons() == Qt::RightButton) {
- handleClick(Qt::RightButton, event->scenePos());
}
if(event->type() == QEvent::GraphicsSceneMouseDoubleClick)
QGraphicsScene::mouseDoubleClickEvent(event);
}
void ChatScene::clickTimeout() {
- if(!_leftButtonPressed && _clickMode == SingleClick && !_clickHandled)
+ if(!_leftButtonPressed && _clickMode == SingleClick)
handleClick(Qt::LeftButton, _clickPos);
}