Commit Graph
93 Commits
Author SHA1 Message Date
aiongg f3e0f614fd Integration: #1416 Clear acts on live points only; reset anchor_release on press 2026-10-31 00:13:37 +00:00
aiongg 8d55602ef1 Merge PR #1430: Properties: Anchor Point(s) with Convert Points and Delete Point(s), as in the reference app
crates/tools/src/select.rs: took the PR's later anchor_selection and moved_points use; kept main's content-mode-off corner pull
crates/ui-egui/src/canvas/frames.rs: kept the handle_shown filter from #1657
crates/ui-egui/src/panels/properties.rs: kept main's imports
crates/ui-egui/src/panels/properties/tests.rs: kept both sides' tests
crates/ui-egui/src/i18n/{ar,cs,de,it,ja,ka,pl,pt_br,ru,uk}.rs: union of both sides' keys
2026-10-30 23:15:49 +00:00
aiongg 9b36f1f139 Merge PR #1657: Direct Selection: handles around the selected anchors only, and no bounding box
crates/tools/src/select.rs: dropped the doubled corner-pull block (the PR's copy of the old code and main's); kept one with main's content-mode fix and the stack's others field
crates/engine/src/tests.rs: kept main's tests and the PR's new test
crates/ui-egui/src/canvas/frames.rs: kept the PR's handle_shown filter
2026-10-30 23:15:07 +00:00
aiongg 3b79317e03 Merge PR #1416: Direct Selection: select anchor points with a marquee across paths and move them together
crates/engine/src/tests.rs: kept main's tests and the PR's new tests
crates/tools/src/tests.rs: kept main's tests and the PR's new tests
2026-10-30 23:14:41 +00:00
aiongg 978effab49 Integration: #902 Direct Selection anchor drags send a spread-space delta 2026-10-30 21:24:27 +00:00
aiongg 55fb94242e Integration: #902 Direct Selection anchor pull selects the frame, not its content 2026-10-30 21:24:27 +00:00
aiongg 09fbe280ff Integration: #1125 Direct Selection on one of several selected frames selects just that frame 2026-10-30 21:24:27 +00:00
aiongg 8227f29295 Merge PR #1125: Direct Selection on a selected frame selects its image, so Delete keeps the frame
crates/engine/src/tests.rs: kept both new tests (#902 corner pull, #1125 image delete)
2026-10-30 19:44:33 +00:00
moppeeerandClaude Opus 5.5 785c49a1d4 rustfmt
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-29 15:08:12 +01:00
moppeeerandClaude Opus 5.5 11ef2cc840 rustfmt
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-29 15:01:01 +01:00
moppeeerandClaude Opus 5.5 5fc7496629 rustfmt
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-29 13:43:42 +01:00
moppeeerandClaude Opus 5.5 4a71ee5d83 rustfmt
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-29 13:22:55 +01:00
moppeeerandClaude Opus 5.5 fd7d8dfb77 rustfmt
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-29 12:08:10 +01:00
moppeeer 89808ec42f Merge remote-tracking branch 'origin/main' into codex/direct-select-unselected-anchor
# Conflicts:
#	crates/tools/src/select.rs
2026-10-29 11:45:00 +01:00
moppeeer 42a3637bfc Merge remote-tracking branch 'origin/main' into direct-select-delete-image
# Conflicts:
#	crates/tools/src/select.rs
2026-10-29 11:44:41 +01:00
moppeeer 00a64e5943 Merge remote-tracking branch 'origin/main' into direct-select-anchor-points
# Conflicts:
#	crates/tools/src/select.rs
#	crates/ui-egui/src/canvas.rs
2026-10-29 11:43:21 +01:00
moppeeer 5a4012bab8 Merge remote-tracking branch 'origin/main' into properties-anchor-points
# Conflicts:
#	crates/tools/src/select.rs
#	crates/ui-egui/src/canvas.rs
#	crates/ui-egui/src/i18n.rs
#	crates/ui-egui/src/panels/properties.rs
#	docs/target-app-parity.md
2026-10-29 11:42:56 +01:00
moppeeer f0b580074d Merge remote-tracking branch 'origin/main' into direct-select-handles
# Conflicts:
#	crates/tools/src/select.rs
#	crates/ui-egui/src/canvas.rs
2026-10-29 11:38:53 +01:00
Dylan M. Taylor bcb9546f5d Refactor tools for strict Clippy checks 2026-10-28 11:39:26 +00:00
moppeeer 2a972a01c1 Merge remote-tracking branch 'origin/main' into direct-select-delete-image
# Conflicts:
#	ROADMAP.md
2026-10-24 14:19:46 +02:00
moppeeer 9a51698cb9 Merge branch 'direct-select-anchor-points' into properties-anchor-points 2026-10-24 12:38:24 +02:00
moppeeer 14a0fe12d6 Merge branch 'direct-select-anchor-points' into direct-select-handles 2026-10-24 12:38:21 +02:00
moppeeerandClaude Opus 5.5 4b281bd20b Format the merge of main
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-24 12:38:20 +02:00
moppeeer 77b69bc693 Merge branch 'direct-select-anchor-points' into properties-anchor-points 2026-10-24 11:46:24 +02:00
moppeeer 9d7911b822 Merge branch 'direct-select-anchor-points' into direct-select-handles 2026-10-24 11:46:16 +02:00
moppeeer 1038ec1b3c Merge remote-tracking branch 'origin/main' into direct-select-anchor-points
# Conflicts:
#	crates/engine/src/cmd/edit.rs
#	crates/engine/src/tests.rs
#	crates/tools/src/select.rs
2026-10-24 11:46:16 +02:00
moppeeer 589d3d7c1a Merge remote-tracking branch 'origin/main' into codex/direct-select-unselected-anchor
# Conflicts:
#	crates/engine/src/tests.rs
2026-10-24 11:18:56 +02:00
Dylan M. TaylorandClaude Sonnet 5.5 4c5ea73d98 refactor(tools): fewer parameters and simpler pointer handling (Sonar S107, S3776) (#1725)
Co-authored-by: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-24 04:51:35 -04:00
moppeeer 245fb99a8d Merge remote-tracking branch 'origin/main' into direct-select-delete-image
# Conflicts:
#	crates/engine/src/tests.rs
2026-10-23 23:42:19 +02:00
moppeeer db1e7b182c Merge branch 'direct-select-anchor-points' into properties-anchor-points
# Conflicts:
#	ROADMAP.md
2026-10-23 17:00:40 +02:00
Marco Arnulfo c764454ed3 Align: a click on one of several selected objects makes it the key object (fixes #1637) 2026-10-23 16:22:52 +02:00
moppeeerandClaude Opus 5.5 3fbaf8dfb9 Direct Selection: handles around the selected anchors only, and no bounding box
As InDesign: a selected anchor shows both its direction handles, and its
neighbours the handle that shapes the segment to it; with no anchor
selected no handle shows. Handles that don't show can't be grabbed (one
rule, select::handle_shown, for drawing and hit testing). The pen and the
anchor tools still show every handle. Under the anchor tools the selection
is drawn as its path and points, without the bounding box.

Found in the Learn Skills Daily course, chapter 43.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23 14:28:48 +02:00
moppeeerandClaude Opus 5.5 a1d4b1bc27 Merge #902 (Direct Selection pulls a corner of an unselected object) into direct-select-anchor-points
Both change the Direct Selection tool: #902's corner pull now builds the
anchor drag with this branch's list of other selected anchors (none), so the
two build together; both sets of tests are kept.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23 14:13:33 +02:00
moppeeer db8b14eacc Merge branch 'direct-select-anchor-points' into properties-anchor-points 2026-10-22 12:38:24 +02:00
moppeeerandClaude Opus 5.5 fed464d9da Direct Selection: a Shift-click on a selected point previews no move
While the press is still a click (inside the drag tolerance), a drag event
moves nothing, so the release takes the point away without moving it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-22 12:38:20 +02:00
moppeeerandClaude Opus 5.5 d744b760fe Direct Selection points: each moves in its own spread; Delete deletes them; Transform measures them
`path.moveAnchors` points may carry their own spread-space movement
(`[id, subpath, index, dx, dy]`). Dragging and the arrow keys send each
selected point's movement converted for its spread, so on a spread turned on
screen a point moves the way the pointer or arrow does. Delete and Backspace
with points selected run `path.deletePoints`. Properties › Transform for
selected points shows the points' bounds; X/Y move them and W/H spread or
gather them about the reference point, in one step (`transform_anchors`).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-22 12:20:44 +02:00
moppeeerandClaude Opus 5.5 66b51ee15f Merge fix: a Shift-click release keeps the other selected objects
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-22 12:11:55 +02:00
moppeeer 250825e5b7 Merge branch 'direct-select-anchor-points' into properties-anchor-points
# Conflicts:
#	ROADMAP.md
#	crates/tools/src/tests.rs
2026-10-22 12:11:30 +02:00
moppeeerandClaude Opus 5.5 1dc1dbf31a Direct Selection: a Shift-drag keeps a selected point; snapping keeps the 45° constraint
Shift pressed on a selected anchor point keeps it selected, so the press can
become a constrained drag of all the selected points; a Shift-click still
takes it away, on release. With Shift, a snap moves the points only along
the constrained direction. The canvas looks selected points up in a set.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-22 12:10:36 +02:00
moppeeer 5f623e0cba Merge remote-tracking branch 'origin/main' into properties-anchor-points
# Conflicts:
#	ROADMAP.md
#	crates/tools/src/select.rs
#	crates/ui-egui/src/panels/properties.rs
2026-10-22 10:46:35 +02:00
moppeeer d2001f2597 Merge remote-tracking branch 'origin/main' into direct-select-anchor-points
# Conflicts:
#	ROADMAP.md
#	crates/tools/src/select.rs
2026-10-22 10:41:07 +02:00
moppeeer a1a7742b0c Merge remote-tracking branch 'origin/main' into direct-select-delete-image
# Conflicts:
#	ROADMAP.md
2026-10-22 09:24:58 +02:00
moppeeer 48303d7d46 Merge remote-tracking branch 'origin/main' into codex/direct-select-unselected-anchor
# Conflicts:
#	ROADMAP.md
2026-10-22 08:39:27 +02:00
aionggandSBaksa c3382b422c Guides: a dragged ruler guide snaps to guides, margins, columns and objects (#1542)
* Guides: a dragged guide shows where it is (#1282)

While a guide is dragged out of a ruler or moved, a label beside the
pointer reads X: or Y: and the guide's place, in the ruler units and
measured the way the rulers measure (from the zero point, and from the
page origin when rulers restart per page).

* Guides: keep the drag readout inside the canvas

Near the canvas's right or bottom edge the readout flips to the other
side of the pointer, and it is kept inside the canvas in every case
(readout_at).

* Guides: the drag readout measures the spread under the pointer

The readout measured from the spread in the middle of the view (where the
rulers measure), but a guide is dropped on the spread under the pointer,
so with spreads above one another the number shown could differ from the
guide's place. It now measures that spread (ruler_pieces_of).

* Guides: no readout for an existing guide over another spread

An existing guide moves only on its own spread (guide_drag), so dropped
over another it stays where it was: the readout no longer shows a place
there it won't go.

* #1282: guide selection commands (guide.select, guide.selectAll, guide.deselect, guide.moveBy)

* #1282: select ruler guides on the canvas, X/Y in the Control bar and Properties

* #1282: guides take clicks over objects, a new guide is selected, group drag preview

* Guides: a dragged ruler guide snaps to guides, margins, columns and objects (#1221)

---------

Co-authored-by: SBaksa <sabaksa11@gmail.com>
2026-10-22 02:26:52 -04:00
aionggandSBaksa 3be2736d0a Guides: select ruler guides and set their position (#1282) (#1445)
* Guides: a dragged guide shows where it is (#1282)

While a guide is dragged out of a ruler or moved, a label beside the
pointer reads X: or Y: and the guide's place, in the ruler units and
measured the way the rulers measure (from the zero point, and from the
page origin when rulers restart per page).

* Guides: keep the drag readout inside the canvas

Near the canvas's right or bottom edge the readout flips to the other
side of the pointer, and it is kept inside the canvas in every case
(readout_at).

* Guides: the drag readout measures the spread under the pointer

The readout measured from the spread in the middle of the view (where the
rulers measure), but a guide is dropped on the spread under the pointer,
so with spreads above one another the number shown could differ from the
guide's place. It now measures that spread (ruler_pieces_of).

* Guides: no readout for an existing guide over another spread

An existing guide moves only on its own spread (guide_drag), so dropped
over another it stays where it was: the readout no longer shows a place
there it won't go.

* #1282: guide selection commands (guide.select, guide.selectAll, guide.deselect, guide.moveBy)

* #1282: select ruler guides on the canvas, X/Y in the Control bar and Properties

* #1282: guides take clicks over objects, a new guide is selected, group drag preview

* ROADMAP: the progress line lands in one commit after the guide PRs

---------

Co-authored-by: SBaksa <sabaksa11@gmail.com>
2026-10-22 01:47:49 -04:00
paaspaas00andClaude Opus 5.5 d9f0d2c004 Direct Selection: a point selection without Shift selects only those points' paths
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-21 12:21:42 +02:00
moppeeerandClaude Opus 5.5 061c4faaf0 Direct Selection: select anchor points with a marquee across paths and move them together
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-20 22:32:46 +02:00
moppeeerandClaude Opus 5.5 13576c365d PR-1125: Direct Selection selects pasted-in content too; test in a private temp dir
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-20 16:57:48 +02:00
moppeeer ebc59b74e1 PR-902: refresh against main and resolve review findings 2026-10-19 14:45:28 +02:00
moppeeer ecd7830e63 PR-1125: refresh against main and resolve review findings 2026-10-19 14:44:54 +02:00