From 9cea1fe0d3604859295638b87faecf7652bf0f89 Mon Sep 17 00:00:00 2001 From: Chenlei Hu Date: Sun, 9 Mar 2025 23:27:48 -0400 Subject: [PATCH] Only update widget state when visible (#2954) --- src/components/graph/DomWidgets.vue | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/src/components/graph/DomWidgets.vue b/src/components/graph/DomWidgets.vue index 88163048b..59f4c1338 100644 --- a/src/components/graph/DomWidgets.vue +++ b/src/components/graph/DomWidgets.vue @@ -41,19 +41,22 @@ const updateWidgets = () => { if (!widgetState) continue - widgetState.visible = + const visible = lgCanvas.isNodeVisible(node) && !(widget.options.hideOnZoom && lowQuality) && widget.isVisible() - widgetState.pos = [node.pos[0] + MARGIN, node.pos[1] + MARGIN + widget.y] - widgetState.size = [ - (widget.width ?? node.width) - MARGIN * 2, - (widget.computedHeight ?? 50) - MARGIN * 2 - ] - // TODO: optimize this logic as it's O(n), where n is the number of nodes - widgetState.zIndex = lgCanvas.graph.nodes.indexOf(node) - widgetState.readonly = lgCanvas.read_only + widgetState.visible = visible + if (visible) { + widgetState.pos = [node.pos[0] + MARGIN, node.pos[1] + MARGIN + widget.y] + widgetState.size = [ + (widget.width ?? node.width) - MARGIN * 2, + (widget.computedHeight ?? 50) - MARGIN * 2 + ] + // TODO: optimize this logic as it's O(n), where n is the number of nodes + widgetState.zIndex = lgCanvas.graph.nodes.indexOf(node) + widgetState.readonly = lgCanvas.read_only + } } }