Commit Graph
4115 Commits
Author SHA1 Message Date
moppeeer 75c28c33b3 Merge remote-tracking branch 'origin/main' into paragraph-border-links
# Conflicts:
#	ROADMAP.md
2026-10-22 09:21:52 +02:00
moppeeer 41dfff176d Merge remote-tracking branch 'origin/main' into package-pdf-preset
# Conflicts:
#	ROADMAP.md
2026-10-22 09:19:49 +02:00
moppeeer aab57ce52e Merge remote-tracking branch 'origin/main' into package-dialog
# Conflicts:
#	ROADMAP.md
2026-10-22 09:19:10 +02:00
moppeeer 9c7834d13a Merge remote-tracking branch 'origin/main' into recent-items-whole-number
# Conflicts:
#	ROADMAP.md
2026-10-22 09:18:31 +02:00
moppeeer 2c805b2322 Merge remote-tracking branch 'origin/main' into preferences-interface
# Conflicts:
#	ROADMAP.md
2026-10-22 09:17:51 +02:00
moppeeer 8d09c3ab82 Merge remote-tracking branch 'origin/main' into spelling-common-words
# Conflicts:
#	ROADMAP.md
2026-10-22 09:17:12 +02:00
moppeeer f820b8a56d Merge remote-tracking branch 'origin/main' into insert-pages-dialog
# Conflicts:
#	ROADMAP.md
2026-10-22 09:16:33 +02:00
moppeeer 8de065ec82 Merge remote-tracking branch 'origin/main' into status-bar-parent-page-box
# Conflicts:
#	ROADMAP.md
2026-10-22 09:15:53 +02:00
moppeeer 2408c1d3b6 Merge remote-tracking branch 'origin/main' into color-panel-gradient-stop
# Conflicts:
#	ROADMAP.md
2026-10-22 09:15:12 +02:00
moppeeer 23caed608e Merge remote-tracking branch 'origin/main' into swatch-inline-rename
# Conflicts:
#	ROADMAP.md
2026-10-22 09:14:32 +02:00
moppeeer 99842be5e1 Merge remote-tracking branch 'origin/main' into properties-fill-color-picker
# Conflicts:
#	ROADMAP.md
2026-10-22 09:13:51 +02:00
moppeeer 8b4ca5f76c Merge remote-tracking branch 'origin/main' into find-change-format
# Conflicts:
#	ROADMAP.md
2026-10-22 09:11:53 +02:00
moppeeer 6467e0b30a Merge remote-tracking branch 'origin/main' into character-style-from-selection
# Conflicts:
#	ROADMAP.md
2026-10-22 09:11:12 +02:00
moppeeer 02192ab904 Merge remote-tracking branch 'origin/main' into control-panel-lists-shading
# Conflicts:
#	ROADMAP.md
2026-10-22 09:09:12 +02:00
moppeeer a50c161f7f Merge remote-tracking branch 'origin/main' into properties-bullets-options
# Conflicts:
#	ROADMAP.md
2026-10-22 09:08:31 +02:00
moppeeer fc04020f0b Merge remote-tracking branch 'origin/main' into list-buttons-hanging-indent
# Conflicts:
#	ROADMAP.md
2026-10-22 09:07:49 +02:00
moppeeer 19914b43be Merge remote-tracking branch 'origin/main' into paragraph-style-general
# Conflicts:
#	ROADMAP.md
2026-10-22 09:07:08 +02:00
moppeeer ffd74840c8 Merge remote-tracking branch 'origin/main' into paragraph-rule-types
# Conflicts:
#	ROADMAP.md
2026-10-22 09:06:25 +02:00
moppeeer 9b8ba34341 Merge remote-tracking branch 'origin/main' into text-frame-options-layout
# Conflicts:
#	ROADMAP.md
2026-10-22 09:05:46 +02:00
moppeeer 1a578956aa Merge remote-tracking branch 'origin/main' into control-panel-text-modes
# Conflicts:
#	ROADMAP.md
2026-10-22 09:04:26 +02:00
moppeeer 1fd37c82c7 Merge remote-tracking branch 'origin/main' into properties-more-options
# Conflicts:
#	ROADMAP.md
2026-10-22 09:03:44 +02:00
moppeeer b851551d2c Merge remote-tracking branch 'origin/main' into effects-angle-dial
# Conflicts:
#	ROADMAP.md
2026-10-22 09:00:34 +02:00
moppeeer 5d2db6f958 Merge remote-tracking branch 'origin/main' into effect-blend-modes
# Conflicts:
#	ROADMAP.md
2026-10-22 08:59:41 +02:00
moppeeer 54582a80b9 Merge remote-tracking branch 'origin/main' into align-to-glyphs
# Conflicts:
#	ROADMAP.md
2026-10-22 08:55:56 +02:00
moppeeer 12c00b9095 Merge remote-tracking branch 'origin/main' into clear-fitting-options
# Conflicts:
#	ROADMAP.md
2026-10-22 08:53:42 +02:00
aionggandHamza 333f2a04e3 Selection: drag a column guide to move its gutter (#1096) (#1176)
* IDML: keep column guides that were dragged off centre (#1096)

InDesign records dragged column guides in `MarginPreference ColumnsPositions`,
as pairs of offsets from the margin box's left edge. The importer discarded them
and divided the columns evenly, so a page whose gutter the designer had moved
came back with it in the middle: on a 450 pt margin box, `0 150 170 450` was
read as columns at 215 and 235.

`Columns::positions` already existed, documented as "Custom column positions
(after dragging column guides)", but nothing set it and nothing read it. Now
`Page::column_rects` returns the custom rects when they are set — that one
method is what the canvas guides, snapping, threading and the first frame of a
placed story all go through, so they follow the dragged gutter — the importer
fills it, and the exporter writes the page's real positions instead of
recomputing an even split, so the round trip keeps them.

`layout.marginsAndColumns` clears them when a count or gutter is set, which is
what InDesign's Margins and Columns does. Without that the stale positions would
outrank the new value and the dialog would look broken.

Verified against InDesign-authored IDML rather than assumed, which settled two
things. The attribute is written whether or not anything was dragged — a real
page's values are exactly its even split — so an even set is dropped rather than
marking every imported page custom and freezing its columns; the tolerance for
that comparison only absorbs float noise, about 1e-14 pt on that page. And
`<Guide>` is a `<Page>` child, not a `<Spread>` one, which is where this
importer already looks: the reporter's missing ruler guide was 099fbd2, landed
the day the ticket was filed, not a second bug.

That commit left `lib.rs` still listing guides as ignored on import; corrected.

* IDML: test a ruler guide in a column gutter without facing pages (#1096)

* View: Lock Guides and Lock Column Guides are commands (#1096)

view.lockGuides {on?} (Cmd+Alt+;) sets the Lock Guides UI state the Properties panel and ruler-guide drags use. view.lockColumnGuides {on?} is a document setting, on by default, saved with the document, not an undo step, and read from and written to IDML ColumnGuideLocked. Both are in View > Grids & Guides with checkmarks.

* IDML: custom column positions are validated and round-trip (#1096)

Columns::positions are used only when they are 2 x count finite edges,
ascending from 0 to the margin box width (within 0.01 pt); anything else
is the even split, in Page::column_rects, on IDML import (bounded parse,
checked against the page's margin box) and on IDML export.
Columns::with_gutter_moved moves one gutter's pair of guides between its
neighbours for the coming column-guide command.

ROADMAP: drop four progress-log lines the #1121 merge duplicated and move
its line to the top.

* Layout: Margins and Columns keeps dragged columns unless the count or gutter changes (#1096)

* Layout: autoflow, inserted pages and new parents follow dragged columns (#1096)

* Integration: close #1121's round-trip test beside the ruler-guide test

* View: Lock Column Guides is translated wherever Lock Guides is (#1096)

* View: Lock Column Guides is translated wherever Lock Guides is (#1096)

* Layout: a new margin or page width resets dragged columns (#1096)

* IDML: a page without its own margins checks the default's column positions against its width (#1096)

* Layout: #1121's margin case follows the new-width rule (#1096)

* View: Lock Column Guides is undoable (#1096)

* Layout: dragged columns scale with a new margin or page width (#1096)

* Layout: dragged columns mirror when a page changes side (#1096)

* Layout: the page-width test drags a page whose columns are its own (#1096)

* Selection: drag a column guide to move its gutter (#1096)

* Layout: pages that follow a one-page parent take its dragged columns mirrored (#1096)

* Selection: column-guide drag review fixes (#1096)

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

---------

Co-authored-by: Hamza <mail.hamzanaveed@gmail.com>
2026-10-22 02:52:17 -04:00
moppeeer ff20f573ac Merge remote-tracking branch 'origin/main' into drawing-feedback
# Conflicts:
#	ROADMAP.md
2026-10-22 08:52:13 +02:00
moppeeer 1588c25c57 Merge remote-tracking branch 'origin/main' into graphic-frame-x-corners
# Conflicts:
#	ROADMAP.md
2026-10-22 08:51:29 +02:00
moppeeer 3ff3e1610c Merge remote-tracking branch 'origin/main' into properties-text-frames-apply-to
# Conflicts:
#	ROADMAP.md
2026-10-22 08:50:03 +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 15a4b587e0 Merge remote-tracking branch 'origin/main' into indesign-default-swatches
# Conflicts:
#	ROADMAP.md
2026-10-22 08:47:56 +02:00
moppeeer 2d75080121 Merge remote-tracking branch 'origin/main' into corner-menu-icons
# Conflicts:
#	ROADMAP.md
2026-10-22 08:47:10 +02:00
moppeeer f12f610fd4 Merge remote-tracking branch 'origin/main' into object-menu-order
# Conflicts:
#	ROADMAP.md
2026-10-22 08:46:26 +02:00
moppeeer cff8cfbc84 Merge remote-tracking branch 'origin/main' into centimeters-four-decimals
# Conflicts:
#	ROADMAP.md
2026-10-22 08:45:44 +02:00
moppeeer d978ae42d2 Merge remote-tracking branch 'origin/main' into create-guides-spread
# Conflicts:
#	ROADMAP.md
2026-10-22 08:45:03 +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 1518c0f6e5 Merge remote-tracking branch 'origin/main' into corner-options-dialog
# Conflicts:
#	ROADMAP.md
2026-10-22 08:43:40 +02:00
moppeeer 471049a3ad Merge remote-tracking branch 'origin/main' into codex/pages-section-marker-dialog
# Conflicts:
#	ROADMAP.md
2026-10-22 08:42:13 +02:00
moppeeer 1e1dfc7432 Merge remote-tracking branch 'origin/main' into codex/toc-more-options
# Conflicts:
#	ROADMAP.md
2026-10-22 08:41:34 +02:00
moppeeer eebbeca3e0 Merge remote-tracking branch 'origin/main' into codex/toc-dialog-title-width
# Conflicts:
#	ROADMAP.md
2026-10-22 08:40:54 +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
moppeeer afadbd6362 Merge remote-tracking branch 'origin/main' into codex/new-section-dialog
# Conflicts:
#	ROADMAP.md
2026-10-22 08:38:46 +02:00
moppeeer 25f556d169 Merge remote-tracking branch 'origin/main' into codex/pages-panel-sections
# Conflicts:
#	ROADMAP.md
2026-10-22 08:36:13 +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
aionggandHamza a912438ab8 Layout: autoflow, inserted pages and new parents follow dragged columns, mirrored across sides (#1096) (#1173)
* IDML: keep column guides that were dragged off centre (#1096)

InDesign records dragged column guides in `MarginPreference ColumnsPositions`,
as pairs of offsets from the margin box's left edge. The importer discarded them
and divided the columns evenly, so a page whose gutter the designer had moved
came back with it in the middle: on a 450 pt margin box, `0 150 170 450` was
read as columns at 215 and 235.

`Columns::positions` already existed, documented as "Custom column positions
(after dragging column guides)", but nothing set it and nothing read it. Now
`Page::column_rects` returns the custom rects when they are set — that one
method is what the canvas guides, snapping, threading and the first frame of a
placed story all go through, so they follow the dragged gutter — the importer
fills it, and the exporter writes the page's real positions instead of
recomputing an even split, so the round trip keeps them.

`layout.marginsAndColumns` clears them when a count or gutter is set, which is
what InDesign's Margins and Columns does. Without that the stale positions would
outrank the new value and the dialog would look broken.

Verified against InDesign-authored IDML rather than assumed, which settled two
things. The attribute is written whether or not anything was dragged — a real
page's values are exactly its even split — so an even set is dropped rather than
marking every imported page custom and freezing its columns; the tolerance for
that comparison only absorbs float noise, about 1e-14 pt on that page. And
`<Guide>` is a `<Page>` child, not a `<Spread>` one, which is where this
importer already looks: the reporter's missing ruler guide was 099fbd2, landed
the day the ticket was filed, not a second bug.

That commit left `lib.rs` still listing guides as ignored on import; corrected.

* IDML: custom column positions are validated and round-trip (#1096)

Columns::positions are used only when they are 2 x count finite edges,
ascending from 0 to the margin box width (within 0.01 pt); anything else
is the even split, in Page::column_rects, on IDML import (bounded parse,
checked against the page's margin box) and on IDML export.
Columns::with_gutter_moved moves one gutter's pair of guides between its
neighbours for the coming column-guide command.

ROADMAP: drop four progress-log lines the #1121 merge duplicated and move
its line to the top.

* Layout: autoflow, inserted pages and new parents follow dragged columns (#1096)

* IDML: a page without its own margins checks the default's column positions against its width (#1096)

* Layout: dragged columns mirror when a page changes side (#1096)

* Layout: pages that follow a one-page parent take its dragged columns mirrored (#1096)

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

---------

Co-authored-by: Hamza <mail.hamzanaveed@gmail.com>
2026-10-22 02:26:38 -04:00
aionggandHamza 1ba06027ac Layout: Margins and Columns keeps dragged columns, which scale with the margin box (#1096) (#1172)
* IDML: keep column guides that were dragged off centre (#1096)

InDesign records dragged column guides in `MarginPreference ColumnsPositions`,
as pairs of offsets from the margin box's left edge. The importer discarded them
and divided the columns evenly, so a page whose gutter the designer had moved
came back with it in the middle: on a 450 pt margin box, `0 150 170 450` was
read as columns at 215 and 235.

`Columns::positions` already existed, documented as "Custom column positions
(after dragging column guides)", but nothing set it and nothing read it. Now
`Page::column_rects` returns the custom rects when they are set — that one
method is what the canvas guides, snapping, threading and the first frame of a
placed story all go through, so they follow the dragged gutter — the importer
fills it, and the exporter writes the page's real positions instead of
recomputing an even split, so the round trip keeps them.

`layout.marginsAndColumns` clears them when a count or gutter is set, which is
what InDesign's Margins and Columns does. Without that the stale positions would
outrank the new value and the dialog would look broken.

Verified against InDesign-authored IDML rather than assumed, which settled two
things. The attribute is written whether or not anything was dragged — a real
page's values are exactly its even split — so an even set is dropped rather than
marking every imported page custom and freezing its columns; the tolerance for
that comparison only absorbs float noise, about 1e-14 pt on that page. And
`<Guide>` is a `<Page>` child, not a `<Spread>` one, which is where this
importer already looks: the reporter's missing ruler guide was 099fbd2, landed
the day the ticket was filed, not a second bug.

That commit left `lib.rs` still listing guides as ignored on import; corrected.

* IDML: custom column positions are validated and round-trip (#1096)

Columns::positions are used only when they are 2 x count finite edges,
ascending from 0 to the margin box width (within 0.01 pt); anything else
is the even split, in Page::column_rects, on IDML import (bounded parse,
checked against the page's margin box) and on IDML export.
Columns::with_gutter_moved moves one gutter's pair of guides between its
neighbours for the coming column-guide command.

ROADMAP: drop four progress-log lines the #1121 merge duplicated and move
its line to the top.

* Layout: Margins and Columns keeps dragged columns unless the count or gutter changes (#1096)

* Layout: a new margin or page width resets dragged columns (#1096)

* Layout: #1121's margin case follows the new-width rule (#1096)

* Layout: dragged columns scale with a new margin or page width (#1096)

* Layout: the page-width test drags a page whose columns are its own (#1096)

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

---------

Co-authored-by: Hamza <mail.hamzanaveed@gmail.com>
2026-10-22 02:23:32 -04:00
aiongg d7b9f716f1 View: Lock Guides and Lock Column Guides are commands (#1096) (#1174)
* View: Lock Guides and Lock Column Guides are commands (#1096)

view.lockGuides {on?} (Cmd+Alt+;) sets the Lock Guides UI state the Properties panel and ruler-guide drags use. view.lockColumnGuides {on?} is a document setting, on by default, saved with the document, not an undo step, and read from and written to IDML ColumnGuideLocked. Both are in View > Grids & Guides with checkmarks.

* View: Lock Column Guides is translated wherever Lock Guides is (#1096)

* View: Lock Column Guides is undoable (#1096)

* ROADMAP: the progress line lands in one commit after the guide PRs
2026-10-22 02:12:42 -04:00
aionggandHamza 6f7fc7134a IDML: dragged column guides import, validated, and round-trip (#1096) (#1171)
* IDML: keep column guides that were dragged off centre (#1096)

InDesign records dragged column guides in `MarginPreference ColumnsPositions`,
as pairs of offsets from the margin box's left edge. The importer discarded them
and divided the columns evenly, so a page whose gutter the designer had moved
came back with it in the middle: on a 450 pt margin box, `0 150 170 450` was
read as columns at 215 and 235.

`Columns::positions` already existed, documented as "Custom column positions
(after dragging column guides)", but nothing set it and nothing read it. Now
`Page::column_rects` returns the custom rects when they are set — that one
method is what the canvas guides, snapping, threading and the first frame of a
placed story all go through, so they follow the dragged gutter — the importer
fills it, and the exporter writes the page's real positions instead of
recomputing an even split, so the round trip keeps them.

`layout.marginsAndColumns` clears them when a count or gutter is set, which is
what InDesign's Margins and Columns does. Without that the stale positions would
outrank the new value and the dialog would look broken.

Verified against InDesign-authored IDML rather than assumed, which settled two
things. The attribute is written whether or not anything was dragged — a real
page's values are exactly its even split — so an even set is dropped rather than
marking every imported page custom and freezing its columns; the tolerance for
that comparison only absorbs float noise, about 1e-14 pt on that page. And
`<Guide>` is a `<Page>` child, not a `<Spread>` one, which is where this
importer already looks: the reporter's missing ruler guide was 099fbd2, landed
the day the ticket was filed, not a second bug.

That commit left `lib.rs` still listing guides as ignored on import; corrected.

* IDML: custom column positions are validated and round-trip (#1096)

Columns::positions are used only when they are 2 x count finite edges,
ascending from 0 to the margin box width (within 0.01 pt); anything else
is the even split, in Page::column_rects, on IDML import (bounded parse,
checked against the page's margin box) and on IDML export.
Columns::with_gutter_moved moves one gutter's pair of guides between its
neighbours for the coming column-guide command.

ROADMAP: drop four progress-log lines the #1121 merge duplicated and move
its line to the top.

* IDML: a page without its own margins checks the default's column positions against its width (#1096)

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

---------

Co-authored-by: Hamza <mail.hamzanaveed@gmail.com>
2026-10-22 01:59:10 -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
aiongg 2660395db5 macOS: a Language submenu in the app menu (#1541) 2026-10-22 01:31:36 -04:00