11#!/usr/bin/python
22# -*- coding: utf-8 -*-
33import os
4+ import math
45
56from NodeGraphQt import QtGui , QtCore , QtWidgets
67from NodeGraphQt .constants import (IN_PORT , OUT_PORT ,
@@ -412,7 +413,7 @@ def sceneMousePressEvent(self, event):
412413 return
413414 pipe = pipe_items [0 ]
414415 from_port = pipe .port_from_pos (pos , True )
415- from_port ._hovered = True
416+ from_port .hovered = True
416417
417418 attr = {IN_PORT : 'output_port' , OUT_PORT : 'input_port' }
418419 self ._detached_port = getattr (pipe , attr [from_port .port_type ])
@@ -437,7 +438,7 @@ def sceneMouseReleaseEvent(self, event):
437438 if not self ._LIVE_PIPE .isVisible ():
438439 return
439440
440- self ._start_port ._hovered = False
441+ self ._start_port .hovered = False
441442
442443 # find the end port.
443444 end_port = None
@@ -452,8 +453,15 @@ def sceneMouseReleaseEvent(self, event):
452453 # if port disconnected from existing pipe.
453454 if end_port is None :
454455 if self ._detached_port and not self ._LIVE_PIPE .shift_selected :
455- disconnected .append ((self ._start_port , self ._detached_port ))
456- self .connection_changed .emit (disconnected , connected )
456+ dist = math .hypot (self ._previous_pos .x () - self ._origin_pos .x (),
457+ self ._previous_pos .y () - self ._origin_pos .y ())
458+ if dist <= 2.0 : # cursor pos threshold.
459+ self .establish_connection (self ._start_port ,
460+ self ._detached_port )
461+ self ._detached_port = None
462+ else :
463+ disconnected .append ((self ._start_port , self ._detached_port ))
464+ self .connection_changed .emit (disconnected , connected )
457465
458466 self ._detached_port = None
459467 self .end_live_connection ()
0 commit comments