Commit Graph
629 Commits
Author SHA1 Message Date
Harrison Booth d453bee54f D604: readable animation effect labels 2026-10-30 18:57:51 -05:00
Brandon Thomas c4221b1a7c Merge pull request #1371
Slide show: render the Presenter View's next-slide preview off the UI thread
2026-10-30 16:08:21 -04:00
Brandon ThomasandClaude Opus 5.5 bcbdb76bfd Slide show test: clear the textures of the lone presenter frame
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 16:06:58 -04:00
Brandon Thomas 1b5d860dfc Merge pull request #1449
Format Shape Effects: preset tiles for Shadow, Glow and Soft Edges, shadow Size
2026-10-30 16:05:36 -04:00
Brandon Thomas 3e8a9193bc Merge pull request #1447
Format Shape: Scale Height/Width and a From origin in Size & Properties

# Conflicts:
#	crates/ui-egui/src/panels/format_shape.rs
2026-10-30 16:05:35 -04:00
Brandon Thomas cee1d015ec Merge pull request #1438
Animations: the Add Animation menu scrolls when it is taller than the window (fixes #1370)
2026-10-30 16:05:27 -04:00
Brandon Thomas dc1fc8d83b Merge pull request #1418
fix(slides): dragging several selected slides moves them all
2026-10-30 16:05:27 -04:00
Brandon ThomasandClaude Opus 5.5 b7bec00386 Merge origin/main into #1449: preset tiles move into effects_tab
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 16:03:42 -04:00
Brandon ThomasandClaude Opus 5.5 087c11bb42 Merge origin/main into #1447: Size & Properties moves to size_tab, From uses craft_ui::ComboBox
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 16:01:56 -04:00
Brandon Thomas c3d1df6d28 Merge pull request #1382
feat(ui): support Alt+1..9 shortcuts for Quick Access Toolbar items
2026-10-30 15:59:10 -04:00
Brandon ThomasandClaude Opus 5.5 c1b0cf72df Merge origin/main into #1438: port the Add Animation scroll onto ribbon/animations.rs
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 15:55:09 -04:00
Brandon ThomasandClaude Opus 5.5 11b271b9ae Tests: the Picture Styles resize test asks that the row grow at 1920 px, not for an exact count (#1560)
The count depends on how wide the rest of the Picture Format ribbon is.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 15:54:46 -04:00
Brandon ThomasandClaude Opus 5.5 ecad13d1cc Merge origin/main into #1418: port the slide drag onto panels/thumbs.rs and sorter/ui_tests.rs
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 15:48:56 -04:00
Brandon Thomas 6030fb4f8c Merge pull request #1471
File > New: keep the template tiles inside the right margin in a narrow window
2026-10-30 15:48:31 -04:00
Brandon Thomas b3c36e816a Merge pull request #1560
Picture Format: the Picture Styles row leaves room for Crop and Size
2026-10-30 15:48:31 -04:00
Brandon Thomas 95a55b0ea7 Merge pull request #1437
fix(format): Reflection None clears after another preset (#1356)

# Conflicts:
#	crates/ui-egui/src/lib.rs
2026-10-30 15:48:20 -04:00
Brandon Thomas 5e85f73c5e Merge pull request #1397
Format: Fill offers Slide background fill
2026-10-30 15:48:04 -04:00
Brandon Thomas 5191af8ebb Merge remote-tracking branch 'origin/main' into HEAD 2026-10-30 15:43:28 -04:00
Brandon Thomas 8d278d71cb Merge pull request #1456
Slide show: Set Up Slide Show can keep the mouse cursor visible (#1445)

# Conflicts:
#	crates/ui-egui/src/app/commands.rs
#	crates/ui-egui/src/lib.rs
2026-10-30 15:42:42 -04:00
Brandon Thomas 9cb51393b3 Merge pull request #1533
Slide show: going back plays the left slide's transition in reverse (#1531)
2026-10-30 15:42:30 -04:00
Brandon Thomas 62b06a0a91 Merge pull request #1226
Fix the editor's media bar ignoring clicks
2026-10-30 15:42:28 -04:00
Brandon Thomas 8075b7ecd8 Merge pull request #1480
show.presenter answers {on, window} (part of #298)
2026-10-30 15:42:11 -04:00
Dylan M. Taylor 505a6f28ac Update prompt shows the app icon and accent color instead of a letter (#1561)
UPDATE_APP (native builds; craft-update is a native-only dependency) carries our 128 px icon and accent (#f07a1e, its colour in ArtCraft Launcher). The updater, the self-update
helper and craft-update's startup prompt all get them through crate::UPDATE_APP; the
prompt draws the icon, the accent and "by ArtCraft" (craft-update's default developer).

craft-update is pinned to storytold/craft-libs main at 1065653e7 (#434).
Clippy fixes for Rust 1.99 in untouched code (same logic):
- crates/engine/src/tools/click.rs
- crates/engine/src/tools/pointer.rs
- crates/metafile/src/emfplus.rs
- crates/model/src/trendline.rs
- crates/pptx/src/read/dml.rs
- xtask/src/layers.rs
2026-10-30 01:28:38 -04:00
JonRC 0da9cac9dc Picture Format: a resize alone brings the Picture Styles row to the new width
The ribbon now asks for one more frame when a tab's spare room changes by
more than half a point, so the row is sized for the new width even when no
input follows the resize. The test resizes 1440 to 1920 and back and checks
the harness settles.
2026-10-29 23:25:54 -03:00
JonRC 99bb0f0a62 Picture Format: the Picture Styles row leaves room for Crop and Size
The gallery put all 24 picture styles in the ribbon row, about 1370 px, so
Alt Text, Arrange, Crop and Size sat past the ribbon's edge in any window
narrower than about 2500 px, the default 1440 px window and a maximized
1920 px one included. The row now shows as many styles as leave room for
the groups after it (at least two), sized from the width the tab left free
on the last frame, and an arrow opens all 24 in a menu, as the Transitions
and Animations galleries do.
2026-10-29 23:12:08 -03:00
Piyush Goel 8333c371e1 feat(ui): support Alt+1..9 shortcuts for Quick Access Toolbar items 2026-10-29 16:20:29 +05:30
FaabyyandClaude 8cc25169ab Slide show: going back reverses the left slide's transition (#1531)
Back from slide B to slide A played A's own entrance transition. PowerPoint
plays the transition B came in with, backwards.

ShowState now remembers that the current slide was reached by Back
(`backward`, set by `prev`, cleared by every other way in). The show then
takes the transition of the slide it left and runs its frames from the end
to the start, with the old and new slides trading places
(`transition_layers`). Morph needs no reversing: a Morph from the slide
left to the one come back to already is the reversed Morph. A jump (Go to
Slide, links, See All Slides) still plays the target slide's transition.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-10-29 09:33:59 +00:00
FaabyyandClaude 83ad5d287c Merge upstream/main into feat/show-keep-cursor-1445
Co-Authored-By: Claude <noreply@anthropic.com>
2026-10-28 18:22:37 +00:00
dotCooCoo edbf542570 Format: Fill hides the kept group fill's editors with Slide background fill
A group that keeps a gradient, pattern or picture fill for its pictures
no longer shows that fill's editor while its shapes have the slide
background fill, so editing it cannot replace their fill.
2026-10-28 04:15:58 -07:00
dotCooCoo fca0492725 Format: Fill shows Slide background fill for a group that keeps its fill
A group whose picture uses the group's fill keeps that fill when its
shapes take the slide background fill. The pane now shows Slide
background fill chosen for that group.
2026-10-28 04:10:38 -07:00
dotCooCoo b57ab3fb35 Merge commit 'refs/check/mw-deckcraft-main' into feat/slide-background-fill
# Conflicts:
#	crates/engine/src/cmd/shape.rs
#	crates/ui-egui/src/panes.rs
2026-10-28 03:50:51 -07:00
Dylan M. Taylor 8c6c72e39f Refactor ui-egui for strict Clippy checks 2026-10-28 06:02:27 +00:00
Harrison Booth 9c24a63d1e Format Shape: the shadow detail controls read the inner shadow first, as the preset row does 2026-10-27 21:28:23 -05:00
Harrison Booth 5638b0ca09 Format Shape: the glow size test checks the colour and transparency are kept 2026-10-27 21:11:54 -05:00
Harrison Booth d8c88cea1d Format Shape: Scale and a centre origin need a single selected shape 2026-10-27 20:57:04 -05:00
Harrison Booth 322be04e7b Format Shape: a glow size tile keeps the glow's colour and transparency 2026-10-27 20:55:03 -05:00
Zach BerryandClaude Sonnet 5.5 1ca71474a2 [JJ3] show.presenter answers {on, window}
The answer was null. Presenter view is its own window beside the show window,
so window is true; the doc says where it appears.

PowerPoint: Presenter View opens in a separate window on the second display
when the show starts (the Use Presenter View option); same here.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-27 20:34:18 -05:00
Harrison Booth b5928a182e Keep the File > New tiles inside the right margin in a narrow window (#1421)
set_max_width(CONTENT_W) widened the page past the margin whenever the window was
narrower than CONTENT_W, so the last tile in each row ran off the screen edge.
2026-10-27 19:50:52 -05:00
Harrison Booth d989389441 fix(format): a slider commits only a move to another shown value
changed() also fires when the slider rounds the value it shows, on focus too. Compare the rounded
values, so keyboard and accessibility edits commit without focus and rounding does not.
2026-10-27 19:31:36 -05:00
Harrison Booth 90ce7dcb9b test(format): clear the reflection after each preset, as #1356 reports 2026-10-27 19:18:14 -05:00
Harrison Booth faf4c0ee52 fix(format): Reflection slider with only focus does not re-add the reflection
A reflection slider that had focus and lost it to the None button committed its stale value.
Commit on focus loss only after an edit the user made, and cover it with a kittest.
2026-10-27 19:10:49 -05:00
Harrison Booth 952e4db95f Merge remote-tracking branch 'origin/main' into dc-fix-reflection
# Conflicts:
#	crates/ui-egui/src/panes.rs
2026-10-27 18:47:18 -05:00
aiongg 2c9edcc394 refactor(ui): use craft-ui's ComboBox for every dropdown (#1457)
* ui: use craft_ui::ComboBox so dropdown menus grow back (egui#5225); repin craft-libs

* chore(deps): craft-libs 60d60d48 (dropdown fixes)

* chore(deps): craft-libs 6af63481 (dropdown fixes)

* chore(deps): craft-libs 4d7b82f7 (dropdown fixes)

* chore(deps): craft-libs 92d392cf (#387 merged)

* chore(xtask): pdf-deps expects craft-libs 92d392cf
2026-10-27 10:26:51 -04:00
NaseqandClaude Opus 5.5 feecee0a30 Slide show tests: check the pending preview and the one-render gate directly (#964)
A harness runs frames until no repaint is asked for, so the preview had
already landed when its first assertion ran. One raw frame now shows the
preview pending and one render started, and the paging test pins a pending
job and checks a page turn starts no other render.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-27 18:13:44 +04:30
NaseqandClaude Opus 5.5 356195ba33 Slide show: render the Presenter View's next-slide preview off the UI thread (#964)
Turning the page with Presenter View on re-rendered the next-slide preview
synchronously, single-threaded, on the UI thread. The preview now renders
on a worker thread and arrives on a later frame; the web build (no
threads), or a worker that dies, renders it inline. At most one render runs:
paging faster than it asks for the newest preview once it is done, and a
finished one no longer wanted is dropped. Job and texture are keyed by the
presentation as well as the slide, so a preview rendered before an edit is
rendered again. While a preview is on its way the box stays empty rather
than saying "End of slide show".

Rebased onto the show module split: show/presenter.rs.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-27 17:53:57 +04:30
FaabyyandClaude b9842d0b82 Slide show: Set Up Slide Show can keep the mouse cursor visible (#1445)
A full-screen show hides a still pointer after 2.5 s, which makes decks
with clickable, branching choices hard to use. Set Up Slide Show now has
Keep mouse cursor visible (`show.keepCursor {on?}`): the show then keeps
the normal pointer, and the pointing hand over links and actions, while
links still follow. It is a user preference kept in ui.json, since PPTX
has no place for it; off by default, Reading View unchanged.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-10-27 10:50:26 +00:00
Harrison Booth 9ad147b310 Format Shape Effects: drawn Shadow, Glow and Soft Edges preset tiles, and a shadow Size slider 2026-10-26 21:51:54 -05:00
Harrison Booth 6fa873dcfc feat(ui-egui): Scale Height/Width and a From origin in Format Shape's Size & Properties
Scale is measured from the size the tab first showed, like the Size and Position
dialog, and runs shape.sizePosition (honouring Lock aspect ratio). From switches
Horizontal/Vertical between the top-left corner and the centre. The lock checkbox
used a fresh id every frame so it never held; it now keeps its state.
2026-10-26 21:18:44 -05:00
62ea604394 Animations: the Add Animation menu scrolls when it is taller than the window (fixes #1370)
Every effect in one column is taller than a 1440p screen, and the popup
did not scroll, so the last entries could not be reached. Cap the menu at
the window height minus the title bar and ribbon, and scroll inside it.

Co-Authored-By: Grok 4.7 <noreply@x.ai>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-26 23:48:25 +01:00
Harrison Booth 1b2e5ea9e0 fix(format): keep explicit slider edits, skip only the rounding 2026-10-26 17:36:59 -05:00