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.
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>
Remove the duplicate header lines in gaps.md, ROADMAP.md, ui-parity.md and
localization-parity.md. Drop gap entries that landed: Morph outline alignment
(#67) and animation rewind (#77). Record that PR #75 was closed unmerged so
#60 stays open, and that #53 is closed with Windows image paste tracked in
#1414. Note Reuse Slides (#1103) and Compare reject (#850). Command count 323.
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>
Dragging one of several selected slides in the thumbnail pane or the
Slide Sorter moved only the dragged slide. Now the whole selection moves
as one run in deck order, in one undo step, stays selected and joins the
section it lands in; an unselected slide still moves alone.
- slide.move takes `ids` (checked against the deck while parsed, repeats
fold), alongside the unchanged `{from, to}`.
- The slide drag records its slides and the presentation it began in; a
drag in another presentation, or one whose release no view saw (a
Sorter double-click opening Normal view mid-gesture), is dropped
instead of moving slides on a later release.
- Normal-view thumbnails carry a "Slide N" label, like Sorter cells.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
PowerPoint stores an arrow typed in a Wingdings run as U+F0E0 with
<a:sym typeface="Wingdings"/> on the whole run, and draws only the
symbol code in Wingdings: the space after it is the run's own font. A
synthetic deck with "→ Only …" (U+F0E0, a space, words) in one run with
a:sym, and the same with a:sym on the arrow's run alone, exported as
PDF, draws both lines alike. DeckCraft kept the space in the arrow's
face, since spaces, digits and punctuation stay in the face of the text
before them, and Wingdings' space is about four times a text font's: the
words started 20 pt further right.
A neutral character no longer stays in a symbol font's face
(is_symbol_font); it takes the run's font like any other.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix(windows): keep the shortcut icon after an update (#1114)
The MSI's Start menu shortcut took its icon from the WiX <Icon>, which Windows
Installer caches under %APPDATA%\Microsoft\Installer\{ProductCode}\. Every
update is a major upgrade with a new ProductCode, so the old folder is deleted.
A taskbar pin is a copy of the shortcut that the update never touches, so it
kept pointing at the deleted file and lost its icon.
Drop the Icon from the shortcut so it shows the icon embedded in deckcraft.exe,
whose path survives updates. The <Icon> stays for ARPPRODUCTICON. A test keeps
shortcuts from naming an MSI icon again.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
* contributors: credit Sofia Alves Figueredo by real name
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
* fix(windows): make the Start menu shortcut non-advertised (#1114)
Addresses the review comment: without an MSI Icon, a non-advertised shortcut
targets the installed exe directly and takes its embedded icon.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
* fix(windows): package.ps1 rejects a deckcraft.exe with no embedded icon (#1114)
The shortcuts now take the exe's own icon, and -SkipBuild packages an existing
exe that may come from a build without DECKCRAFT_REQUIRE_WINRES=1. Count its
icons with ExtractIconEx and stop before WiX when there are none.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Sonnet 5.5 <noreply@anthropic.com>
Format Shape's Fill section had no Slide background fill option, and
shape.fill had no parameter for it. A shape opened from a file with
useBgFill showed Automatic chosen.
shape.fill {background: true} now fills a shape with the slide
background, and Format Shape lists Slide background fill after Pattern
fill. It has no Color button or Transparency slider. Saving writes
useBgFill, and the slide background shows through the shape.
A layout's round picture placeholder keeps a slide's photo in a circle in
PowerPoint. The reader marked only p:sp placeholders as inheriting their
geometry, so a p:pic placeholder with just a frame in its spPr came out as
a rectangle (with the layout's border). Mark p:pic placeholders too; the
renderer already clips pictures to their geometry.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Format Shape's Pattern fill set 25 % in accent 1 on background 1 and
offered no way to change it, and Format Background listed 10 of the 54
presets by their XML names. Both panes now show the same editor: a
gallery of the 54 DrawingML presets drawn in the fill's own colors,
each named in words, and Foreground and Background color menus.
With a pattern fill, Format Shape no longer shows the solid-fill Color
button, which replaced the pattern with a solid fill, or the
Transparency slider, which did not change a pattern. The renderer
exports the preset list and tiles for the gallery to draw.
The segment menu in Edit Points offered only Straight Segment and Curved
Segment. It now also has Add Point, which adds a point where the right
click was, Delete Segment, which removes the segment from a closed outline
so that the outline opens there (grayed out on an open outline), and Open
Path, which opens the outline at the segment's start point (Close Path on
an open outline).
`shape.deleteSegment` does the deletion for the CLI and MCP.
The place on a segment that a click picks was found only in steps of 1/32
of the segment, so Add Point and Ctrl-click could add the point as far
as 1/64 of a straight segment's length from the pointer. It is now narrowed
down after that first pass.
Adding or deleting a point now forgets a point type remembered for handle
drags, as opening and closing the outline already did. `shape.addPoint` on
the first point of an open outline no longer splits the closing edge of
another outline later in the same path.
Cmd+wheel on a Mac. Four notches double the zoom, up to 4x; zooming back to the whole slide leaves the zoom. The plain wheel still turns the page, and the trackpad pinch is still not a show gesture.
Esc during a vertex or handle drag in Edit Points used to leave Edit
Points while the drag went on: the point kept following the pointer and
the release added an undo step. Esc now ends the drag and puts the shape
back as it was at the press, with no undo step, and Edit Points stays on.
Esc without a drag still leaves Edit Points.
A handle drag in Edit Points ignored the modifier keys: the point kept
the type it had. In PowerPoint, Shift, Ctrl or Alt held during the drag
sets the point's type.
Shift held while dragging a point's handle now makes it a smooth point.
Ctrl (Cmd on the Mac) makes it a straight point, and Alt (Option) makes
it a corner point. The handle drag passes that type to shape.moveHandle,
and the point keeps it for the next drag without a modifier, as after
Smooth Point, Straight Point or Corner Point in the right-click menu.