diff --git a/opencodeblocks/graphics/scene/clipboard.py b/opencodeblocks/graphics/scene/clipboard.py index b377359e..c8e02fd6 100644 --- a/opencodeblocks/graphics/scene/clipboard.py +++ b/opencodeblocks/graphics/scene/clipboard.py @@ -79,11 +79,13 @@ def _find_bbox_center(self, blocks_data): ymax = y return (xmin + xmax) / 2, (ymin + ymax) / 2 - def _deserializeData(self, data:OrderedDict): + def _deserializeData(self, data:OrderedDict, set_selected=True): hashmap = {} view = self.scene.views()[0] mouse_pos = view.lastMousePos + if set_selected: + self.scene.clearSelection() # Finding pasting bbox center bbox_center_x, bbox_center_y = self._find_bbox_center(data['blocks']) @@ -103,6 +105,8 @@ def _deserializeData(self, data:OrderedDict): block_pos = block.pos() block.setPos(block_pos.x() + offset_x, block_pos.y() + offset_y) + if set_selected: + block.setSelected(True) self.scene.addItem(block) hashmap.update({block.id: block}) @@ -110,11 +114,15 @@ def _deserializeData(self, data:OrderedDict): for edge_data in data['edges']: edge = OCBEdge() edge.deserialize(edge_data, hashmap, restore_id=False) + + if set_selected: + edge.setSelected(True) self.scene.addItem(edge) hashmap.update({edge_data['id']: edge}) self.scene.history.checkpoint('Desiralized elements into scene', set_modified=True) + def _store(self, data:OrderedDict): str_data = json.dumps(data, indent=4) QApplication.instance().clipboard().setText(str_data)