Skip to content

Instantly share code, notes, and snippets.

@pestefo
Last active December 20, 2015 19:09
Show Gist options
  • Save pestefo/6180776 to your computer and use it in GitHub Desktop.
Save pestefo/6180776 to your computer and use it in GitHub Desktop.
Making edges follow their nodes
RODraggable>>initializeElement: element
| svgElement |
svgElement := element shape svgElement.
svgElement
drag: [ :dx :dy |
| bboxCurrent |
bboxCurrent := svgElement getBBox.
svgElement translate: ((element position x) - (bboxCurrent x) + dx) y: ((element position y) -(bboxCurrent y) + dy).
]
onStart: [ "do nothing"]
onEnd: [
| bboxAfterDrag |
bboxAfterDrag := svgElement getBBox.
"update current position"
element translateTo: (bboxAfterDrag x)@(bboxAfterDrag y).
].
"-- How i think it should look like"
RODraggable>>initializeElement: element
| svgElement |
svgElement := element shape svgElement.
svgElement
drag: [ :dx :dy |
| bboxCurrent |
bboxCurrent := svgElement getBBox.
svgElement translate: ((element position x) - (bboxCurrent x) + dx) y: ((element position y) -(bboxCurrent y) + dy).
"update element position and redraw"
element translateTo: ((element position x) - (bboxCurrent x) + dx)@((element position y) -(bboxCurrent y) + dy).
element signalUpdate.
]
onStart: [ "do nothing"]
onEnd: [
| bboxAfterDrag |
bboxAfterDrag := svgElement getBBox.
"update current position"
"element translateTo: (bboxAfterDrag x)@(bboxAfterDrag y). <-- moved to drag block"
].
"-- "
ROView>>signalUpdate
"Pharo implementation: self announce: RORefreshNeeded"
self elements do: [:el | el drawOn: svgCanvas].
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment