mirror of
https://github.com/rbreu/beeref.git
synced 2026-03-11 08:54:28 +00:00
Bring newly inserted items to front
This commit is contained in:
parent
b9487371f8
commit
aff745d27f
4 changed files with 21 additions and 20 deletions
|
|
@ -26,8 +26,8 @@ class InsertItems(QtGui.QUndoCommand):
|
|||
def redo(self):
|
||||
self.scene.clearSelection()
|
||||
for item in self.items:
|
||||
item.setSelected(True)
|
||||
self.scene.addItem(item)
|
||||
item.setSelected(True)
|
||||
|
||||
def undo(self):
|
||||
self.scene.clearSelection()
|
||||
|
|
|
|||
|
|
@ -52,7 +52,7 @@ class BeePixmapItem(QtWidgets.QGraphicsPixmapItem):
|
|||
|
||||
self.single_select_mode = False
|
||||
self.scale_active = False
|
||||
self.viewport_scale = None
|
||||
self.viewport_scale = 1
|
||||
|
||||
def __str__(self):
|
||||
return (f'Image "{self.filename}" '
|
||||
|
|
@ -115,8 +115,14 @@ class BeePixmapItem(QtWidgets.QGraphicsPixmapItem):
|
|||
screen so we need to adjust the values according to the scale
|
||||
factor sof the view and the item."""
|
||||
|
||||
scale = self.scene().views()[0].get_scale()
|
||||
return value / scale / self.scale()
|
||||
if self.scene():
|
||||
scale = self.scene().views()[0].get_scale()
|
||||
return value / scale / self.scale()
|
||||
else:
|
||||
# This can happen when the item is already removed from
|
||||
# the scene but its boundingRect is still needed. Use the
|
||||
# last known scaling factor instead
|
||||
return value * self.viewport_scale
|
||||
|
||||
@property
|
||||
def select_resize_size(self):
|
||||
|
|
|
|||
|
|
@ -11,34 +11,26 @@ from .base import BeeTestCase
|
|||
class InsertItemsTestCase(BeeTestCase):
|
||||
|
||||
def test_redo_undo(self):
|
||||
def get_images():
|
||||
return list(filter(lambda i: isinstance(i, BeePixmapItem),
|
||||
scene.items()))
|
||||
|
||||
scene = BeeGraphicsScene(None)
|
||||
scene.update_selection = MagicMock()
|
||||
scene.max_z = 5
|
||||
item1 = BeePixmapItem(QtGui.QImage())
|
||||
scene.addItem(item1)
|
||||
item2 = BeePixmapItem(QtGui.QImage())
|
||||
command = commands.InsertItems(scene, [item2])
|
||||
command.redo()
|
||||
assert len(get_images()) == 2
|
||||
assert item1 in scene.items()
|
||||
assert list(scene.items_for_save()) == [item1, item2]
|
||||
assert item1.isSelected() is False
|
||||
assert item2 in scene.items()
|
||||
assert item2.isSelected() is True
|
||||
item2.zValue() > 5
|
||||
command.undo()
|
||||
assert get_images() == [item1]
|
||||
assert list(scene.items_for_save()) == [item1]
|
||||
assert item1.isSelected() is False
|
||||
|
||||
|
||||
class DeleteItemsTestCase(BeeTestCase):
|
||||
|
||||
def test_redo_undo(self):
|
||||
def get_images():
|
||||
return list(filter(lambda i: isinstance(i, BeePixmapItem),
|
||||
scene.items()))
|
||||
|
||||
scene = BeeGraphicsScene(None)
|
||||
scene.update_selection = MagicMock()
|
||||
item1 = BeePixmapItem(QtGui.QImage())
|
||||
|
|
@ -48,12 +40,10 @@ class DeleteItemsTestCase(BeeTestCase):
|
|||
item2.setSelected(True)
|
||||
command = commands.DeleteItems(scene, [item2])
|
||||
command.redo()
|
||||
assert get_images() == [item1]
|
||||
assert list(scene.items_for_save()) == [item1]
|
||||
command.undo()
|
||||
assert len(get_images()) == 2
|
||||
assert item1 in scene.items()
|
||||
assert list(scene.items_for_save()) == [item1, item2]
|
||||
assert item1.isSelected() is False
|
||||
assert item2 in scene.items()
|
||||
assert item2.isSelected() is True
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -102,6 +102,11 @@ class BeePixmapItemPaintstuffTestCase(BeeTestCase):
|
|||
self.item.setScale(5)
|
||||
assert self.item.fixed_length_for_viewport(100) == 20
|
||||
|
||||
def test_fixed_length_for_viewport_when_no_scene(self):
|
||||
item = BeePixmapItem(QtGui.QImage())
|
||||
item.viewport_scale = 0.5
|
||||
assert item.fixed_length_for_viewport(100) == 50
|
||||
|
||||
def test_resize_size_when_scaled(self):
|
||||
self.view.get_scale = MagicMock(return_value=2)
|
||||
self.item.setScale(2)
|
||||
|
|
|
|||
Loading…
Reference in a new issue