Index: gsteditorcanvas.py =================================================================== --- gsteditorcanvas.py (revision 35) +++ gsteditorcanvas.py (working copy) @@ -71,22 +71,20 @@ #now watch for these events so we can catch self.linkHandlers = list() - handler = self.connect("motion_notify_event", self._doDrag) + handler = view.connect("motion_notify_event", self._doDrag) self.linkHandlers.append(handler) - handler = self.connect("button_release_event", self._stopDrag) - self.linkHandlers.append(handler) print "handled drag" return False - def _doDrag(self, view, event): + def _doDrag(self, view, target, event): "update link end point" if self.currentLink: - print "dragging" + print "dragging", event.x, event.y return True - def _stopDrag(self, view, event): + def _stopDrag(self, view, target, event): "attaches or destroys a link when user lets go of mouse" ## if self.currentLink: ## #if it's over a pad, try to connect @@ -99,7 +97,7 @@ ## while len(self.linkHandlers): link = self.linkHandlers.pop() - self.disconnect(link) + view.disconnect(link) print "removed link" + str(link) return True @@ -155,6 +153,10 @@ sig = itemview.connect("button_press_event", self._startDrag) self.newelement.signals.append((itemview, sig)) + + # you don't do release events very often, we can put it from the start + sig = itemview.connect("button_release_event", self._stopDrag) + self.newelement.signals.append((itemview, sig)) if item.get_data("item_type") == "element": @@ -165,4 +167,4 @@ self.newelement.signals.append((itemview, sig)) sig = itemview.connect("button_release_event", self.newelement.onButtonRelease) - self.newelement.signals.append((itemview, sig)) \ No newline at end of file + self.newelement.signals.append((itemview, sig))