From eb413001721c23f7f4a4afb39065a76c66c8d643 Mon Sep 17 00:00:00 2001 From: Rebecca Breu Date: Thu, 15 Apr 2021 20:51:43 +0200 Subject: [PATCH] Fix fit item when multi selection active --- beeref/scene.py | 2 ++ tests/test_scene.py | 23 +++++++++++++++++++++++ 2 files changed, 25 insertions(+) diff --git a/beeref/scene.py b/beeref/scene.py index ed2b061..aaf852f 100644 --- a/beeref/scene.py +++ b/beeref/scene.py @@ -129,6 +129,8 @@ class BeeGraphicsScene(QtWidgets.QGraphicsScene): item = self.itemAt(event.scenePos(), self.views()[0].transform()) if item: self.move_active = False + if not item.isSelected(): + item.setSelected(True) self.views()[0].fit_rect( self.itemsBoundingRect(selection_only=True), toggle_item=item) diff --git a/tests/test_scene.py b/tests/test_scene.py index 12ee4b6..430e7fb 100644 --- a/tests/test_scene.py +++ b/tests/test_scene.py @@ -195,6 +195,29 @@ class BeeGraphicsSceneTestCase(BeeTestCase): QtCore.QRectF(30, 40, 100, 100), toggle_item=item) mouse_mock.assert_not_called() + @patch('PyQt6.QtWidgets.QGraphicsScene.mouseDoubleClickEvent') + def test_mouse_doubleclick_event_when_item_not_selected( + self, mouse_mock): + event = MagicMock() + self.scene.move_active = True + item = BeePixmapItem(QtGui.QImage()) + self.scene.addItem(item) + item.setPos(30, 40) + item.setSelected(False) + self.scene.itemAt = MagicMock(return_value=item) + + with patch('beeref.items.BeePixmapItem.width', + new_callable=PropertyMock, return_value=100): + with patch('beeref.items.BeePixmapItem.height', + new_callable=PropertyMock, return_value=100): + self.scene.mouseDoubleClickEvent(event) + + assert self.scene.move_active is False + self.view.fit_rect.assert_called_once_with( + QtCore.QRectF(30, 40, 100, 100), toggle_item=item) + mouse_mock.assert_not_called() + assert item.isSelected() is True + @patch('PyQt6.QtWidgets.QGraphicsScene.mouseDoubleClickEvent') def test_mouse_doubleclick_event_when_not_over_item(self, mouse_mock): event = MagicMock()