QGV: fix items not to be selected on right mouse button release

Task-number: QTBUG-30990
Change-Id: I421d9169b592da2b468eceb9df4f3f7c6a06e8d6
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: Andreas Aardal Hanssen <andreas@hanssen.name>
This commit is contained in:
J-P Nurmi 2013-05-07 12:42:36 +02:00 committed by The Qt Project
parent 3f1519d40a
commit 0b862e0677
2 changed files with 29 additions and 1 deletions

View File

@ -7186,7 +7186,7 @@ void QGraphicsItem::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
*/
void QGraphicsItem::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
{
if (flags() & ItemIsSelectable) {
if (event->button() == Qt::LeftButton && (flags() & ItemIsSelectable)) {
bool multiSelect = (event->modifiers() & Qt::ControlModifier) != 0;
if (event->scenePos() == event->buttonDownScenePos(Qt::LeftButton)) {
// The item didn't move

View File

@ -470,6 +470,7 @@ private slots:
void QTBUG_13473_sceneposchange();
void QTBUG_16374_crashInDestructor();
void QTBUG_20699_focusScopeCrash();
void QTBUG_30990_rightClickSelection();
private:
QList<QGraphicsItem *> paintedItems;
@ -11468,5 +11469,32 @@ void tst_QGraphicsItem::QTBUG_20699_focusScopeCrash()
fs.setFocus();
}
void tst_QGraphicsItem::QTBUG_30990_rightClickSelection()
{
QGraphicsScene scene;
QGraphicsItem *item1 = scene.addRect(10, 10, 10, 10);
item1->setFlags(QGraphicsItem::ItemIsSelectable | QGraphicsItem::ItemIsMovable);
QGraphicsItem *item2 = scene.addRect(100, 100, 10, 10);
item2->setFlags(QGraphicsItem::ItemIsSelectable | QGraphicsItem::ItemIsMovable);
// right mouse press & release over an item should not make it selected
sendMousePress(&scene, item1->boundingRect().center(), Qt::RightButton);
QVERIFY(!item1->isSelected());
sendMouseRelease(&scene, item1->boundingRect().center(), Qt::RightButton);
QVERIFY(!item1->isSelected());
// right mouse press over one item, moving over another item,
// and then releasing should make neither of the items selected
sendMousePress(&scene, item1->boundingRect().center(), Qt::RightButton);
QVERIFY(!item1->isSelected());
QVERIFY(!item2->isSelected());
sendMouseMove(&scene, item2->boundingRect().center(), Qt::RightButton);
QVERIFY(!item1->isSelected());
QVERIFY(!item2->isSelected());
sendMouseRelease(&scene, item2->boundingRect().center(), Qt::RightButton);
QVERIFY(!item1->isSelected());
QVERIFY(!item2->isSelected());
}
QTEST_MAIN(tst_QGraphicsItem)
#include "tst_qgraphicsitem.moc"