double-click on out-node will take you to the right place (if it exists)
This commit is contained in:
parent
9ca70f758a
commit
046b4538be
|
@ -135,6 +135,25 @@ class HierarchicalGraphWidget(QZoomableDraggableGraphicsView):
|
|||
self.current_group.am_event()
|
||||
elif isinstance(node, RelativeAtom):
|
||||
self.instance.workspace.jump_to(node.atom.loc.ins_addr)
|
||||
elif isinstance(node, ExternNode):
|
||||
atlas = self.ng.succ[node.adj_to]
|
||||
rev = False
|
||||
if self.current_group.am_obj not in atlas:
|
||||
atlas = self.ng.pred[node.adj_to]
|
||||
rev = True
|
||||
if self.current_group.am_obj not in atlas:
|
||||
l.error("?????")
|
||||
return
|
||||
attrs = next(iter(atlas[self.current_group.am_obj].values()))
|
||||
further_edge = attrs['prev' if rev else 'next']
|
||||
further_node = further_edge[0 if rev else 1]
|
||||
if self.current_group.am_obj.parent == further_node:
|
||||
target = ExternNode(self.current_group.am_obj)
|
||||
else:
|
||||
target = further_node
|
||||
self.current_group.am_obj = self.current_group.parent
|
||||
self.current_group.am_event(focus=target)
|
||||
|
||||
|
||||
def label(self, node: RelativeAtomOrGroup) -> str:
|
||||
if node not in self._labels:
|
||||
|
@ -563,15 +582,17 @@ class HierarchicalGraphWidget(QZoomableDraggableGraphicsView):
|
|||
|
||||
# objectcontainer event handlers
|
||||
|
||||
def _on_change_group(self, **kwargs):
|
||||
def _on_change_group(self, focus=None, **kwargs):
|
||||
old_group = self._old_group
|
||||
self._old_group = self.current_group.am_obj
|
||||
self._layouts[old_group] = {qnode.model: qnode.center for qnode in self.qnodes}
|
||||
self._layout(600)
|
||||
self._update_scene_rect(True)
|
||||
if old_group in self.ug_reverse:
|
||||
self.qnodes[self.ug_reverse[old_group]].setSelected(True)
|
||||
self.centerOn(self.qnodes[self.ug_reverse[old_group]].center)
|
||||
if focus is None:
|
||||
focus = old_group
|
||||
if focus in self.ug_reverse:
|
||||
self.qnodes[self.ug_reverse[focus]].setSelected(True)
|
||||
self.centerOn(self.qnodes[self.ug_reverse[focus]].center)
|
||||
|
||||
def _on_selection_changed(self, src=None, **kwargs):
|
||||
if src == 'qt':
|
||||
|
|
Loading…
Reference in New Issue