ViewBox bugfixes:

- drag rect now has large ZValue
  - fixed view linking with inverted y axis
This commit is contained in:
Luke Campagnola 2013-07-10 14:30:16 -04:00
parent 7cd3e663f9
commit 5a2b946205

View File

@ -139,6 +139,7 @@ class ViewBox(GraphicsWidget):
self.rbScaleBox = QtGui.QGraphicsRectItem(0, 0, 1, 1) self.rbScaleBox = QtGui.QGraphicsRectItem(0, 0, 1, 1)
self.rbScaleBox.setPen(fn.mkPen((255,255,100), width=1)) self.rbScaleBox.setPen(fn.mkPen((255,255,100), width=1))
self.rbScaleBox.setBrush(fn.mkBrush(255,255,0,100)) self.rbScaleBox.setBrush(fn.mkBrush(255,255,0,100))
self.rbScaleBox.setZValue(1e9)
self.rbScaleBox.hide() self.rbScaleBox.hide()
self.addItem(self.rbScaleBox, ignoreBounds=True) self.addItem(self.rbScaleBox, ignoreBounds=True)
@ -792,12 +793,15 @@ class ViewBox(GraphicsWidget):
else: else:
overlap = min(sg.bottom(), vg.bottom()) - max(sg.top(), vg.top()) overlap = min(sg.bottom(), vg.bottom()) - max(sg.top(), vg.top())
if overlap < min(vg.height()/3, sg.height()/3): ## if less than 1/3 of views overlap, if overlap < min(vg.height()/3, sg.height()/3): ## if less than 1/3 of views overlap,
## then just replicate the view ## then just replicate the view
y1 = vr.top() y1 = vr.top()
y2 = vr.bottom() y2 = vr.bottom()
else: ## views overlap; line them up else: ## views overlap; line them up
upp = float(vr.height()) / vg.height() upp = float(vr.height()) / vg.height()
y2 = vr.bottom() - (sg.y()-vg.y()) * upp if self.yInverted():
y2 = vr.bottom() + (sg.bottom()-vg.bottom()) * upp
else:
y2 = vr.bottom() + (sg.top()-vg.top()) * upp
y1 = y2 - sg.height() * upp y1 = y2 - sg.height() * upp
self.enableAutoRange(ViewBox.YAxis, False) self.enableAutoRange(ViewBox.YAxis, False)
self.setYRange(y1, y2, padding=0) self.setYRange(y1, y2, padding=0)