Update GraphicsScene.py (#599)

In lines 174 and 191 cev[0] is being accessed when cev is an empty list. I get this error when inheriting from GraphicsLayoutWidget and overloading mouseDoubleClickEvent.
This commit is contained in:
miranis 2019-09-13 05:24:48 +02:00 committed by Ogi Moore
parent bbc11b96a9
commit e3884ebd20

View File

@ -183,12 +183,14 @@ class GraphicsScene(QtGui.QGraphicsScene):
if int(ev.buttons() & btn) == 0: if int(ev.buttons() & btn) == 0:
continue continue
if int(btn) not in self.dragButtons: ## see if we've dragged far enough yet if int(btn) not in self.dragButtons: ## see if we've dragged far enough yet
cev = [e for e in self.clickEvents if int(e.button()) == int(btn)][0] cev = [e for e in self.clickEvents if int(e.button()) == int(btn)]
dist = Point(ev.scenePos() - cev.scenePos()).length() if cev:
if dist == 0 or (dist < self._moveDistance and now - cev.time() < self.minDragTime): cev = cev[0]
continue dist = Point(ev.scenePos() - cev.scenePos()).length()
init = init or (len(self.dragButtons) == 0) ## If this is the first button to be dragged, then init=True if dist == 0 or (dist < self._moveDistance and now - cev.time() < self.minDragTime):
self.dragButtons.append(int(btn)) continue
init = init or (len(self.dragButtons) == 0) ## If this is the first button to be dragged, then init=True
self.dragButtons.append(int(btn))
## If we have dragged buttons, deliver a drag event ## If we have dragged buttons, deliver a drag event
if len(self.dragButtons) > 0: if len(self.dragButtons) > 0:
@ -208,10 +210,11 @@ class GraphicsScene(QtGui.QGraphicsScene):
self.dragButtons.remove(ev.button()) self.dragButtons.remove(ev.button())
else: else:
cev = [e for e in self.clickEvents if int(e.button()) == int(ev.button())] cev = [e for e in self.clickEvents if int(e.button()) == int(ev.button())]
if self.sendClickEvent(cev[0]): if cev:
#print "sent click event" if self.sendClickEvent(cev[0]):
ev.accept() #print "sent click event"
self.clickEvents.remove(cev[0]) ev.accept()
self.clickEvents.remove(cev[0])
if int(ev.buttons()) == 0: if int(ev.buttons()) == 0:
self.dragItem = None self.dragItem = None