summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJ-P Nurmi <jpnurmi@digia.com>2013-05-15 14:31:47 +0200
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-05-16 01:31:57 +0200
commit0463c1e6cd26e4b88f433a5598d1bd1544a59212 (patch)
treecc4e3d6f2878e5141b4ba2670bc1bbb41b5888c3
parent0daeee468ccc76dfb957892050b4c11d4807e2d3 (diff)
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.cpp2
-rw-r--r--tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp28
2 files changed, 29 insertions, 1 deletions
diff --git a/src/gui/graphicsview/qgraphicsitem.cpp b/src/gui/graphicsview/qgraphicsitem.cpp
index 63a67e061b..4f31793768 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 15ae53ac95..2637106953 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"