From 1fd4f2ae270f6541e2fcdca23630de326dd44c3f Mon Sep 17 00:00:00 2001 From: Fabien Roger Date: Thu, 20 Jan 2022 16:29:18 +0100 Subject: [PATCH 1/3] :beetle: Fix selection issue --- pyflow/graphics/view.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pyflow/graphics/view.py b/pyflow/graphics/view.py index 6b921de8..9d5a9195 100644 --- a/pyflow/graphics/view.py +++ b/pyflow/graphics/view.py @@ -238,6 +238,7 @@ def moveViewOnArrow(self, event: QKeyEvent) -> bool: selected_item.y() + selected_item.height / 2, ) self.scene().clearSelection() + self.bring_block_forward(selected_item) dist_array = [] for block in code_blocks: @@ -382,6 +383,7 @@ def bring_block_forward(self, block: Block): ): self.currentSelectedBlock.setZValue(0) block.setZValue(1) + block.setSelected(True) self.currentSelectedBlock = block def drag_scene(self, event: QMouseEvent, action="press"): From e64697b23b02eedd72f97348322457ff6658fa6a Mon Sep 17 00:00:00 2001 From: Fabien Roger Date: Thu, 20 Jan 2022 17:01:34 +0100 Subject: [PATCH 2/3] :beetle: Enable moveToItems even on click + Stop giant block behavior --- pyflow/graphics/view.py | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/pyflow/graphics/view.py b/pyflow/graphics/view.py index 9d5a9195..2ce0c952 100644 --- a/pyflow/graphics/view.py +++ b/pyflow/graphics/view.py @@ -159,10 +159,6 @@ def moveToItems(self) -> bool: True if the event was handled, False otherwise. """ - # The focusItem has priority for this event - if self.scene().focusItem() is not None: - return False - items = self.scene().items() # If items are selected, overwride the behvaior @@ -193,9 +189,16 @@ def moveToItems(self) -> bool: required_zoom_x: float = self.width() / (max_x - min_x) required_zoom_y: float = self.height() / (max_y - min_y) - # Operate the zoom and the translation - self.setZoom(min(required_zoom_x, required_zoom_y)) + # Operate the zoom + # If there is only one item, don't make it very big + if len(code_blocks) == 1: + self.setZoom(1) + else: + self.setZoom(min(required_zoom_x, required_zoom_y)) + + # Operate the translation self.centerView(center_x, center_y) + return True def getDistanceToCenter(self, x: float, y: float) -> Tuple[float]: From 59b31b71ab1d1a73487077ebbcafcd3060feb4c1 Mon Sep 17 00:00:00 2001 From: Fabien Roger Date: Thu, 20 Jan 2022 17:08:23 +0100 Subject: [PATCH 3/3] :beetle: Fix moveOnArrow back --- pyflow/graphics/view.py | 1 + 1 file changed, 1 insertion(+) diff --git a/pyflow/graphics/view.py b/pyflow/graphics/view.py index 2ce0c952..34136cce 100644 --- a/pyflow/graphics/view.py +++ b/pyflow/graphics/view.py @@ -284,6 +284,7 @@ def oriented_distance(x, y, key): item_to_navigate = self.scene().itemAt( block_center_x, block_center_y, self.transform() ) + self.scene().clearSelection() if isinstance(item_to_navigate.parentItem(), Block): item_to_navigate.parentItem().setSelected(True)