Skip to content

Commit a488e81

Browse files
committed
feat: move svg elements as a single unit
1 parent 54cbd83 commit a488e81

File tree

1 file changed

+12
-1
lines changed

1 file changed

+12
-1
lines changed

src/LiveDevelopment/BrowserScripts/RemoteFunctions.js

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2138,8 +2138,19 @@ function RemoteFunctions(config = {}) {
21382138

21392139
// we handle the svg elements differently as draggable attribute doesn't work on SVG namespace
21402140
// so for svgs we add mouse related listeners and internally we call the drag related functions
2141+
// NOTE: we don't allow svg child elements dragging. we drag the whole svg element as a single unit
21412142
if (this.element && this.element.namespaceURI === "http://www.w3.org/2000/svg") {
2142-
this.element.addEventListener("mousedown", (event) => { onDragMouseDown(event, this.element); });
2143+
let svgElement = this.element;
2144+
while(svgElement && svgElement.tagName.toLowerCase() !== 'svg') {
2145+
if (svgElement.tagName.toLowerCase() === 'html' || svgElement.tagName.toLowerCase() === 'body') {
2146+
return;
2147+
}
2148+
svgElement = svgElement.parentElement;
2149+
}
2150+
if (svgElement && svgElement.tagName.toLowerCase() === 'svg') {
2151+
svgElement.addEventListener("mousedown", (event) => { onDragMouseDown(event, svgElement); });
2152+
}
2153+
21432154
} else { // for normal elements
21442155
this.element.setAttribute("draggable", "true");
21452156
this.element.addEventListener("dragstart", (event) => { onDragStart(event, this.element); });

0 commit comments

Comments
 (0)