Skip to content

Commit 79966e5

Browse files
authored
fix link creation (#419)
* fix link creation * lift version
1 parent a753864 commit 79966e5

File tree

4 files changed

+29
-8
lines changed

4 files changed

+29
-8
lines changed

CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
11
# Change Log
2+
## [0.19.6] - 2025-10-24
3+
- fix link creation
4+
25
## [0.19.5] - 2025-10-23
36
- fluent transition between deploy/destroy on TV
47
- fixes

package-lock.json

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
"icon": "resources/containerlab.png",
66
"description": "Manages containerlab topologies in VS Code",
77
"author": "SRL Labs",
8-
"version": "0.19.5",
8+
"version": "0.19.6",
99
"homepage": "https://containerlab.dev/manual/vsc-extension/",
1010
"engines": {
1111
"vscode": "^1.99.0"

src/topoViewer/webview-ui/topologyWebviewController.ts

Lines changed: 23 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1164,10 +1164,29 @@ class TopologyWebviewController {
11641164
});
11651165
}
11661166

1167+
private async ensureEdgehandlesReady(): Promise<void> {
1168+
if (!this.eh) {
1169+
await this.initializeEdgehandles();
1170+
return;
1171+
}
1172+
if (typeof this.eh.enable === 'function') {
1173+
this.eh.enable();
1174+
}
1175+
}
1176+
1177+
private async startEdgeCreationFromNode(node: cytoscape.NodeSingular): Promise<void> {
1178+
await this.ensureEdgehandlesReady();
1179+
if (!this.eh) {
1180+
log.error('Edgehandles is not available; unable to start edge creation.');
1181+
return;
1182+
}
1183+
this.isEdgeHandlerActive = true;
1184+
this.eh.start(node);
1185+
}
1186+
11671187
private createAddLinkCommand(): any {
1168-
return this.createNodeMenuItem('fas fa-link', 'Add Link', (node) => {
1169-
this.isEdgeHandlerActive = true;
1170-
this.eh.start(node);
1188+
return this.createNodeMenuItem('fas fa-link', 'Add Link', async (node) => {
1189+
await this.startEdgeCreationFromNode(node);
11711190
});
11721191
}
11731192

@@ -1628,8 +1647,7 @@ class TopologyWebviewController {
16281647

16291648
if (originalEvent.shiftKey && node.data('topoViewerRole') !== 'freeText') {
16301649
log.debug(`Shift+click on node: starting edge creation from node: ${extraData?.longname || node.id()}`);
1631-
this.isEdgeHandlerActive = true;
1632-
this.eh.start(node);
1650+
await this.startEdgeCreationFromNode(node);
16331651
return;
16341652
}
16351653

0 commit comments

Comments
 (0)