diff options
Diffstat (limited to 'grc/gui/FlowGraph.py')
-rw-r--r-- | grc/gui/FlowGraph.py | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/grc/gui/FlowGraph.py b/grc/gui/FlowGraph.py index bfe8fbfa4f..31017a9923 100644 --- a/grc/gui/FlowGraph.py +++ b/grc/gui/FlowGraph.py @@ -84,6 +84,7 @@ class FlowGraph(Element): def set_size(self, *args): self.get_drawing_area().set_size_request(*args) def get_scroll_pane(self): return self.drawing_area.get_parent() def get_ctrl_mask(self): return self.drawing_area.ctrl_mask + def get_mod1_mask(self): return self.drawing_area.mod1_mask def new_pixmap(self, *args): return self.get_drawing_area().new_pixmap(*args) def add_new_block(self, key, coor=None): @@ -574,7 +575,7 @@ class FlowGraph(Element): self.create_shapes() self.queue_draw() else: - #perform autoscrolling + #perform auto-scrolling width, height = self.get_size() x, y = coordinate h_adj = self.get_scroll_pane().get_hadjustment() @@ -594,8 +595,12 @@ class FlowGraph(Element): if len(self.get_selected_elements()) == 1 and self.get_selected_element().is_connection(): Actions.ELEMENT_DELETE() #move the selected elements and record the new coordinate - X, Y = self.get_coordinate() - if not self.get_ctrl_mask(): self.move_selected((int(x - X), int(y - Y))) - self.set_coordinate((x, y)) + if not self.get_ctrl_mask(): + X, Y = self.get_coordinate() + dX, dY = int(x - X), int(y - Y) + active = Actions.TOGGLE_SNAP_TO_GRID.get_active() or self.get_mod1_mask() + if not active or abs(dX) >= Utils.CANVAS_GRID_SIZE or abs(dY) >= Utils.CANVAS_GRID_SIZE: + self.move_selected((dX, dY)) + self.set_coordinate((x, y)) #queue draw for animation self.queue_draw() |