- updated the Distance Tool such that the right click of the mouse will cancel the tool unless it was a panning move

- modified the PlotCanvasLegacy to decide if there is a mouse drag based on the distance between the press event position and the release event position. If the distance is smaller than a delta distance then it is not a drag move.
This commit is contained in:
Marius Stanciu 2020-05-13 00:59:35 +03:00 committed by Marius
parent 7ec3fa73af
commit 41922f5c7c
3 changed files with 25 additions and 7 deletions

View File

@ -14,6 +14,8 @@ CHANGELOG for FlatCAM beta
- now the Tcl commands Drillcncjob and Cncjob can use the toolchangexy and endxy parameters with or without parenthesis (but no spaces allowed)
- modified the Tcl command Paint "single" parameter. Now it's value is a tuple with the x,y coordinates of the single polygon to be painted.
- the HUD display state is now persistent between app restarts
- updated the Distance Tool such that the right click of the mouse will cancel the tool unless it was a panning move
- modified the PlotCanvasLegacy to decide if there is a mouse drag based on the distance between the press event position and the release event position. If the distance is smaller than a delta distance then it is not a drag move.
11.05.2020

View File

@ -302,6 +302,8 @@ class PlotCanvasLegacy(QtCore.QObject):
# signal is the mouse is dragging
self.is_dragging = False
self.mouse_press_pos = None
# signal if there is a doubleclick
self.is_dblclk = False
@ -327,7 +329,7 @@ class PlotCanvasLegacy(QtCore.QObject):
self.text_hud.remove_artist()
self.app.defaults['global_hud'] = False
self.canvas.draw()
class Thud(QtCore.QObject):
@ -858,6 +860,7 @@ class PlotCanvasLegacy(QtCore.QObject):
def on_mouse_press(self, event):
self.is_dragging = True
self.mouse_press_pos = (event.x, event.y)
# Check for middle mouse button press
if self.app.defaults["global_pan_button"] == '2':
@ -883,7 +886,11 @@ class PlotCanvasLegacy(QtCore.QObject):
def on_mouse_release(self, event):
self.is_dragging = False
mouse_release_pos = (event.x, event.y)
delta = 0.05
if abs(self.distance(self.mouse_press_pos, mouse_release_pos)) < delta:
self.is_dragging = False
# Check for middle mouse button release to complete pan procedure
# Check for middle mouse button press

View File

@ -170,6 +170,8 @@ class Distance(FlatCAMTool):
# store here if the snap button was clicked
self.snap_toggled = None
self.mouse_is_dragging = False
# VisPy visuals
if self.app.is_legacy is False:
self.sel_shapes = ShapeCollection(parent=self.app.plotcanvas.view.scene, layers=1)
@ -392,12 +394,16 @@ class Distance(FlatCAMTool):
# are used for panning on the canvas
log.debug("Distance Tool --> mouse click release")
if event.button == 1:
if self.app.is_legacy is False:
event_pos = event.pos
else:
event_pos = (event.xdata, event.ydata)
if self.app.is_legacy is False:
event_pos = event.pos
right_button = 2
event_is_dragging = self.mouse_is_dragging
else:
event_pos = (event.xdata, event.ydata)
right_button = 3
event_is_dragging = self.app.plotcanvas.is_dragging
if event.button == 1:
pos_canvas = self.canvas.translate_coords(event_pos)
if self.snap_center_cb.get_value() is False:
@ -478,6 +484,8 @@ class Distance(FlatCAMTool):
self.rel_point1 = pos
self.calculate_distance(pos=pos)
elif event.button == right_button and event_is_dragging is False:
self.deactivate_measure_tool()
def calculate_distance(self, pos):
if len(self.points) == 1:
@ -522,6 +530,7 @@ class Distance(FlatCAMTool):
try: # May fail in case mouse not within axes
if self.app.is_legacy is False:
event_pos = event.pos
self.mouse_is_dragging = event.is_dragging
else:
event_pos = (event.xdata, event.ydata)