mirror of
https://github.com/ChuckBuilds/LEDMatrix.git
synced 2026-08-23 11:28:14 +00:00
fix(composer): point the align toolbar at the anchor-clearing path
Two alignment implementations existed and the toolbar used the wrong one. alignElement(dir) set el.x/el.y and stopped there. resolveAnchor turns anchor='right' into `dim - val`, so with xAnchor='right' an "align left" (el.x = 0) resolved to x = MATRIX_W and the element jumped to the far right edge -- the opposite of what was asked. It also never touched el.x0/el.y0, so a line's endpoints were left where they were. _alignElement already did both correctly: it clears the anchor so the stored value is absolute, and moves x0/y0 for lines. Its six wrappers -- alignLeft, alignHCenter, alignRight, alignTop, alignVCenter, alignBottom -- existed and had no callers at all. All six toolbar buttons now call the wrappers, and the legacy method is removed rather than left to drift back into use. Tests: the toolbar calls each wrapper and no longer calls alignElement, the legacy definition is gone, and _alignElement still clears the anchor and moves line endpoints. Two of them fail against the previous markup. Full suite 4062 passed, the one failure being test_install_lowmem (pre-existing, awaiting #492). Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01STMbQE4YctTacQXfbYqKuW
This commit is contained in:
co-authored by
Claude Opus 5
parent
37fc1b56b5
commit
2f42d179f6
@@ -1098,23 +1098,6 @@ function composerApp() {
|
||||
},
|
||||
|
||||
// ── Alignment ─────────────────────────────────────────────────────
|
||||
alignElement(dir) {
|
||||
const el = this.selectedElement;
|
||||
if (!el) return;
|
||||
const bb = window.ComposerCanvas.getBoundingBox(el, this.MATRIX_W, this.MATRIX_H);
|
||||
switch (dir) {
|
||||
case 'left': el.x = 0; break;
|
||||
case 'center': el.x = Math.round((this.MATRIX_W - bb.w) / 2); break;
|
||||
case 'right': el.x = this.MATRIX_W - bb.w; break;
|
||||
case 'top': el.y = 0; break;
|
||||
case 'middle': el.y = Math.round((this.MATRIX_H - bb.h) / 2); break;
|
||||
case 'bottom': el.y = this.MATRIX_H - bb.h; break;
|
||||
}
|
||||
this.isDirty = true;
|
||||
this._snapshot();
|
||||
this.render();
|
||||
},
|
||||
|
||||
// ── Templates ─────────────────────────────────────────────────────
|
||||
loadTemplate(tmpl) {
|
||||
if (this.isDirty && this.elements.length > 0) {
|
||||
|
||||
Reference in New Issue
Block a user