Uncomment ViewBox.itemChange

This handles calls for ViewBox.prepareForPaint
This commit is contained in:
Ogi Moore 2021-02-23 21:48:43 -08:00
parent cdb427ff2f
commit d5990bf32c

View File

@ -279,20 +279,17 @@ class ViewBox(GraphicsWidget):
def implements(self, interface): def implements(self, interface):
return interface == 'ViewBox' return interface == 'ViewBox'
# removed due to https://bugreports.qt-project.org/browse/PYSIDE-86 def itemChange(self, change, value):
#def itemChange(self, change, value): ret = super().itemChange(change, value)
## Note: Calling QWidget.itemChange causes segv in python 3 + PyQt if change == self.GraphicsItemChange.ItemSceneChange:
##ret = QtGui.QGraphicsItem.itemChange(self, change, value) scene = self.scene()
#ret = GraphicsWidget.itemChange(self, change, value) if scene is not None and hasattr(scene, 'sigPrepareForPaint'):
#if change == self.ItemSceneChange: scene.sigPrepareForPaint.disconnect(self.prepareForPaint)
#scene = self.scene() elif change == self.GraphicsItemChange.ItemSceneHasChanged:
#if scene is not None and hasattr(scene, 'sigPrepareForPaint'): scene = self.scene()
#scene.sigPrepareForPaint.disconnect(self.prepareForPaint) if scene is not None and hasattr(scene, 'sigPrepareForPaint'):
#elif change == self.ItemSceneHasChanged: scene.sigPrepareForPaint.connect(self.prepareForPaint)
#scene = self.scene() return ret
#if scene is not None and hasattr(scene, 'sigPrepareForPaint'):
#scene.sigPrepareForPaint.connect(self.prepareForPaint)
#return ret
def prepareForPaint(self): def prepareForPaint(self):
#autoRangeEnabled = (self.state['autoRange'][0] is not False) or (self.state['autoRange'][1] is not False) #autoRangeEnabled = (self.state['autoRange'][0] is not False) or (self.state['autoRange'][1] is not False)
@ -426,7 +423,6 @@ class ViewBox(GraphicsWidget):
if scene is not None: if scene is not None:
scene.removeItem(item) scene.removeItem(item)
item.setParentItem(None) item.setParentItem(None)
self.updateAutoRange() self.updateAutoRange()
def clear(self): def clear(self):
@ -453,7 +449,6 @@ class ViewBox(GraphicsWidget):
self.sigStateChanged.emit(self) self.sigStateChanged.emit(self)
self.sigResized.emit(self) self.sigResized.emit(self)
def viewRange(self): def viewRange(self):
"""Return a the view's visible range as a list: [[xmin, xmax], [ymin, ymax]]""" """Return a the view's visible range as a list: [[xmin, xmax], [ymin, ymax]]"""
return [x[:] for x in self.state['viewRange']] ## return copy return [x[:] for x in self.state['viewRange']] ## return copy
@ -627,7 +622,6 @@ class ViewBox(GraphicsWidget):
self._autoRangeNeedsUpdate = True self._autoRangeNeedsUpdate = True
elif changed[1] and self.state['autoVisibleOnly'][0] and (self.state['autoRange'][1] is not False): elif changed[1] and self.state['autoVisibleOnly'][0] and (self.state['autoRange'][1] is not False):
self._autoRangeNeedsUpdate = True self._autoRangeNeedsUpdate = True
self.sigStateChanged.emit(self) self.sigStateChanged.emit(self)
def setYRange(self, min, max, padding=None, update=True): def setYRange(self, min, max, padding=None, update=True):
@ -1608,7 +1602,6 @@ class ViewBox(GraphicsWidget):
self.sigTransformChanged.emit(self) ## segfaults here: 1 self.sigTransformChanged.emit(self) ## segfaults here: 1
def paint(self, p, opt, widget): def paint(self, p, opt, widget):
self.prepareForPaint()
if self.border is not None: if self.border is not None:
bounds = self.shape() bounds = self.shape()
p.setPen(self.border) p.setPen(self.border)