Fix centering and bounds recompute on expand
This commit is contained in:
parent
1b1122226b
commit
8e23aae786
|
@ -208,6 +208,8 @@ class HierarchicalGraphWidget(QZoomableDraggableGraphicsView):
|
|||
qedge.layout()
|
||||
qedge.enter()
|
||||
|
||||
self._update_scene_rect()
|
||||
|
||||
@property
|
||||
def is_expanding(self):
|
||||
return bool(self.expansion_qnodes)
|
||||
|
@ -491,21 +493,28 @@ class HierarchicalGraphWidget(QZoomableDraggableGraphicsView):
|
|||
for edge in self.qedges:
|
||||
edge.layout()
|
||||
|
||||
rect = None
|
||||
for qnode in self.qnodes:
|
||||
br = qnode.boundingRect()
|
||||
br.translate(qnode.x(), qnode.y())
|
||||
rect = rect.united(br) if rect is not None else br
|
||||
if rect is None:
|
||||
rect = QRectF()
|
||||
rect = rect.marginsAdded(QMarginsF(SCENE_MARGIN, SCENE_MARGIN, SCENE_MARGIN, SCENE_MARGIN))
|
||||
self.setSceneRect(rect)
|
||||
self._update_scene_rect()
|
||||
finally:
|
||||
self._layout_event_occurring = False
|
||||
self._layout_lock.release()
|
||||
else:
|
||||
l.warning("Layout lock conflict. Is the application lagging?")
|
||||
|
||||
def _update_scene_rect(self):
|
||||
rect = None
|
||||
for item in self.items():
|
||||
br = item.boundingRect()
|
||||
br.translate(item.x(), item.y())
|
||||
rect = rect.united(br) if rect is not None else br
|
||||
if rect is None:
|
||||
rect = self.mapToScene(self.viewport().rect()).boundingRect()
|
||||
else:
|
||||
rect = rect.marginsAdded(QMarginsF(SCENE_MARGIN, SCENE_MARGIN, SCENE_MARGIN, SCENE_MARGIN))
|
||||
rect = rect.united(self.mapToScene(self.viewport().rect()).boundingRect())
|
||||
center = self.mapToScene(self.viewport().rect().center())
|
||||
self.setSceneRect(rect)
|
||||
self.centerOn(center)
|
||||
|
||||
# qt overrides
|
||||
|
||||
def keyPressEvent(self, event):
|
||||
|
@ -700,7 +709,7 @@ class PropChart(QGraphicsItem):
|
|||
self.scene().removeItem(item)
|
||||
|
||||
data = [(offset, kind, size, count) for offset, v1 in self.prop.struct_data.items() for size, v2 in v1.items() for kind, count in v2.items()]
|
||||
data.sort()
|
||||
data.sort(key=lambda x: (x[0], x[1], -x[2], x[3]))
|
||||
cols_allocated = defaultdict(int)
|
||||
row_allocated = 0
|
||||
offset_allocated = None
|
||||
|
|
Loading…
Reference in New Issue