diff options
author | J-P Nurmi <jpnurmi@digia.com> | 2013-05-15 12:31:47 (GMT) |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-05-15 23:31:57 (GMT) |
commit | 0463c1e6cd26e4b88f433a5598d1bd1544a59212 (patch) | |
tree | cc4e3d6f2878e5141b4ba2670bc1bbb41b5888c3 | |
parent | 0daeee468ccc76dfb957892050b4c11d4807e2d3 (diff) | |
download | Qt-0463c1e6cd26e4b88f433a5598d1bd1544a59212.zip Qt-0463c1e6cd26e4b88f433a5598d1bd1544a59212.tar.gz Qt-0463c1e6cd26e4b88f433a5598d1bd1544a59212.tar.bz2 |
QGV: fix items not to be selected on right mouse button release
Task-number: QTBUG-30990
Change-Id: Iaf2dd7ed496625097daa05d5dc92ef5957574ee9
(Cherry-picked from qtbase/0b862e067756132225e33be09670631edd50d944)
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: Andreas Aardal Hanssen <andreas@hanssen.name>
-rw-r--r-- | src/gui/graphicsview/qgraphicsitem.cpp | 2 | ||||
-rw-r--r-- | tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp | 28 |
2 files changed, 29 insertions, 1 deletions
diff --git a/src/gui/graphicsview/qgraphicsitem.cpp b/src/gui/graphicsview/qgraphicsitem.cpp index 63a67e0..4f31793 100644 --- a/src/gui/graphicsview/qgraphicsitem.cpp +++ b/src/gui/graphicsview/qgraphicsitem.cpp @@ -7238,7 +7238,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 diff --git a/tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp b/tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp index 15ae53a..2637106 100644 --- a/tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp +++ b/tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp @@ -478,6 +478,7 @@ private slots: void QTBUG_13473_sceneposchange(); void QTBUG_16374_crashInDestructor(); void QTBUG_20699_focusScopeCrash(); + void QTBUG_30990_rightClickSelection(); private: QList<QGraphicsItem *> paintedItems; @@ -11497,5 +11498,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" |