Commit Graph
217 Commits
Author SHA1 Message Date
aiongg 0a2a2039a5 Merge PR #1674: Tables: Shift+Tab goes back a cell, and Esc toggles between the text and the cell 2026-10-30 19:44:37 +00:00
aiongg bf67b94f4b Merge PR #1407: Type tool: a drag that starts in an empty frame draws a new text frame over it 2026-10-30 19:44:36 +00:00
aiongg 5599783a6c Merge PR #1418: Frame tools: the size readout shows the document units 2026-10-30 19:44:36 +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
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 0d9b7c74ac Merge remote-tracking branch 'origin/main' into table-cell-keys
# Conflicts:
#	crates/engine/src/cmd/table.rs
#	crates/engine/src/cmd/text.rs
2026-10-29 11:38:49 +01:00
Dylan M. Taylor bcb9546f5d Refactor tools for strict Clippy checks 2026-10-28 11:39:26 +00:00
aiongg 6fae1b2e92 refactor(tools): move the tests module of snap.rs to snap/tests.rs 2026-10-26 18:18:13 +00:00
aiongg 073ac98694 Merge upstream main into keymap-adoption; pin craft-libs to main e3b9e239
Main's shortcut dispatch (shortcut_key, used for keys forwarded from floating panel windows)
becomes the keymap's: shortcuts and forwarded_shortcuts both take their presses through the
key dispatcher and run them once the input is released. craft-keymap comes from
storytold/craft-libs, ForeignSet is built through its constructor, and the panel shortcut test
asks the docking layout which panel shows.
2026-10-25 19:36:33 +00:00
skylar taylor-barrick bd4b9dd1d2 egui-037: reconcile shared window integration with main 2026-10-25 18:34:10 +01:00
Brandon Thomas 05a8d6ac02 Merge pull request #1777 from Silvertree2010/fix/h2047-gradient-swatch-feather-tool-dra
Convert gradient tool drag to spread space on rotated spreads
2026-10-25 12:26:00 -04:00
moppeeer 208593af17 Merge remote-tracking branch 'origin/main' into table-cell-keys 2026-10-25 17:13:33 +01:00
moppeeerandClaude Opus 5.5 2e44b19096 Table keys and cell commands: footnote text isn't a table cell
The caret in a footnote has a CellAddr too (FOOTNOTE_TABLE). Shift+Tab
and Esc there now act as outside a table, and table.nextCell,
table.prevCell and table.toggleSelection refuse it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-25 17:13:33 +01:00
skylartaylor 8a6ed75d41 egui037: reconcile current DesignCraft main and qualify CI 2026-10-25 03:38:13 +01:00
skylartaylor a2db858e7d egui037: Port DesignCraft to egui 0.37
Pin the final egui, winit and shared UI revisions and reconcile current main.
Preserve document-epoch input and screenshot boundaries, host action ordering,
and Windows path regression coverage. Add click/End batch characterization.

Validation: all nine Linux CI stages pass (3230 tests, zero failures); Windows
CI and bounded native editing workflows pass on the same production source.
2026-10-25 00:52:21 +02:00
skylar taylor-barrick 9fc02f8f7b Merge contributor branch codex/placed-graphic-layer-overrides (PR #1647) into main
Conflict resolutions:
- crates/pdf/src/export.rs: keep main's `graphic(.., hidden)` signature from
  #1241 and report retained graphic-layer overrides that drawing cannot apply.
- docs/gaps.md: keep main's change list and add the graphic-layer entry.
2026-10-24 15:30:03 -06:00
NetterSilverandClaude Haiku 5.5 3e7aeaa142 Convert gradient tool drag to spread space on rotated spreads
Found while testing crates/tools/src/gradient.rs:62 (PointerKind::Drag branch: `let to = *sp + (end - *start);`)

Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-24 15:00:35 +00:00
andeecollard 7074dc8a85 M6: preserve per-placement graphic layer options 2026-10-24 13:22:08 +01:00
moppeeer 5ea8bef42d Merge remote-tracking branch 'origin/main' into codex/direct-select-unselected-anchor
# Conflicts:
#	ROADMAP.md
2026-10-24 14:19:49 +02: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 2a748ed828 Merge remote-tracking branch 'origin/main' into type-drag-new-frame
# Conflicts:
#	ROADMAP.md
2026-10-24 14:19:21 +02:00
moppeeer f435140443 Merge remote-tracking branch 'origin/main' into frame-readout-document-units
# Conflicts:
#	ROADMAP.md
2026-10-24 14:19:11 +02:00
moppeeer 0014243ac2 Merge remote-tracking branch 'origin/main' into table-cell-keys
# Conflicts:
#	ROADMAP.md
2026-10-24 14:17:47 +02:00
aiongg d4c1322d97 Merge pull request #1709 from aiongg/w65-batch
Integration batch: book-chapter IDML baseline grids, hyphenation, and the Paragraph panel stack
2026-10-24 08:14:29 -04:00
moppeeer 91d71af75f Merge remote-tracking branch 'origin/main' into type-drag-new-frame
# Conflicts:
#	crates/tools/src/text.rs
2026-10-24 11:45:50 +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
aiongg 14da000a35 Baseline grid: Relative To Top Margin starts the grid at each page's top margin
The setting was imported and editable but never read: the composer, the
canvas grid and baseline snapping measured the grid from the page top.
BaselineGrid::origin gives the first line on a page (start, plus the
page's top margin for Top Margin), and all three use it. The composition
cache tracks the setting and the pages' top margins.

Also adds a left-to-right facing-pages guard test for mirrored margins
and the right parent page's guides and running head.
2026-10-24 04:28:34 +00:00
moppeeer 5217392d50 Merge remote-tracking branch 'origin/main' into table-cell-keys 2026-10-24 00:24:55 +02: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
moppeeerandClaude Opus 5.5 3886ad2fd1 Tables: Shift+Tab goes back a cell and Esc toggles text and cell selection
As in InDesign (Learn Skills Daily / Adobe "How to make a table" lesson):
- With the Type tool in a table cell, Shift+Tab goes to the previous cell.
  It went on to the next one: the tool sent a plain Tab whatever the
  modifiers.
- Esc in a cell toggles between the text and the cell: the insertion point
  or text in a cell selects that cell, and selected cells select the text of
  the first one. Esc left the table and selected the frame.

New engine command table.toggleSelection does the toggle.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23 20:33:44 +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
aiongg 3c38c84438 Merge remote-tracking branch 'upstream/main' into keymap-adoption
# Conflicts:
#	Cargo.toml
#	crates/ui-egui/src/menus.rs
#	crates/ui-egui/src/shortcut_import.rs
#	docs/target-app-parity.md
#	docs/ui-parity.md
2026-10-23 05:10:57 +00:00
moppeeerandClaude Opus 5.5 6388244132 Line tool: the readout measures the line as drawn
The Line tool keeps the line it previews (in spread space, Shift and
snapping included) for the readout, instead of measuring from the press to
the pointer in canvas coordinates. Nothing shows before the first drag step.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-22 10:00:12 +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 4479d9c782 Merge remote-tracking branch 'origin/main' into frame-readout-document-units
# Conflicts:
#	ROADMAP.md
2026-10-22 08:48:39 +02:00
moppeeer 2d742dc57f Merge remote-tracking branch 'origin/main' into type-drag-new-frame
# Conflicts:
#	ROADMAP.md
2026-10-22 08:44:21 +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 717fcd6dec Type tool: a release away from the press doesn't convert the empty frame
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-21 12:00:01 +02:00
moppeeerandClaude Opus 5.5 09970a24b0 Frame tools: the size readout shows the document's units, as InDesign's
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-20 23:12:05 +02:00
moppeeerandClaude Opus 5.5 4a65451d40 Type tool: a drag that starts in an empty frame draws a new text frame over it, as in InDesign
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-20 22:20:26 +02:00
aiongg f314aea711 #1298: typing chords, Ctrl+Alt and clipboard chords on craft-keymap 9aaf9df
Undo, Redo, Select All and Story Editor keep running while typing in a
text frame through Text-context copies of their defaults. Tests for
Ctrl+Alt+Shift+N and AltGr while typing, and for Cmd+Shift+C as the
desktop and the web send it. window.setShortcut leaves a panel's twin
out of its conflicts. Removes the unused tool_for_shortcut, and moves
effective_shortcuts and shortcut_string out of the app code.
2026-10-20 18:04:46 +00: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