Don't activate rubberband when no items in scene

This commit is contained in:
Rebecca Breu 2021-04-18 00:05:46 +02:00
parent a9d360dcb4
commit 87609944a5
2 changed files with 17 additions and 1 deletions

View file

@ -125,7 +125,7 @@ class BeeGraphicsScene(QtWidgets.QGraphicsScene):
self.event_start = event.scenePos()
if self.itemAt(event.scenePos(), self.views()[0].transform()):
self.move_active = True
else:
elif self.items():
self.rubberband_active = True
super().mousePressEvent(event)

View file

@ -186,6 +186,8 @@ class BeeGraphicsSceneTestCase(BeeTestCase):
@patch('PyQt6.QtWidgets.QGraphicsScene.mousePressEvent')
def test_mouse_press_event_when_left_click_not_over_item(self, mouse_mock):
item = BeePixmapItem(QtGui.QImage())
self.scene.addItem(item)
self.scene.itemAt = MagicMock(return_value=None)
event = MagicMock(
button=MagicMock(return_value=Qt.MouseButtons.LeftButton),
@ -198,6 +200,20 @@ class BeeGraphicsSceneTestCase(BeeTestCase):
assert self.scene.rubberband_active is True
assert self.scene.event_start == QtCore.QPointF(10, 20)
@patch('PyQt6.QtWidgets.QGraphicsScene.mousePressEvent')
def test_mouse_press_event_when_no_items(self, mouse_mock):
self.scene.itemAt = MagicMock(return_value=None)
event = MagicMock(
button=MagicMock(return_value=Qt.MouseButtons.LeftButton),
scenePos=MagicMock(return_value=QtCore.QPointF(10, 20)),
)
self.scene.mousePressEvent(event)
event.accept.assert_not_called()
mouse_mock.assert_called_once_with(event)
assert self.scene.move_active is False
assert self.scene.rubberband_active is False
mouse_mock.assert_called_once_with(event)
@patch('PyQt6.QtWidgets.QGraphicsScene.mouseDoubleClickEvent')
def test_mouse_doubleclick_event_when_over_item(self, mouse_mock):
event = MagicMock()