pdfcraft/crates
bmh129 7437bde378
M3: draw a GNOME-style title bar on Wayland (#553) (#1530)
GNOME's Wayland compositor draws no window frames (it offers no
zxdg_decoration_manager_v1), so winit drew its own fallback title bar,
which ignores GNOME's theme, dark mode and button layout. PdfCraft now
asks the compositor at launch (apps/pdfcraft/src/decorations.rs) and,
where it draws no frames, turns winit's frame off and makes the tab strip
the header bar, as in GNOME's own apps
(crates/ui-egui/src/window_controls.rs):

- Minimize, maximize/restore and close in Adwaita's style (round buttons,
  symbolic glyphs drawn in code, no new assets), in the order and on the
  side named by org.gnome.desktop.wm.preferences button-layout, read
  through gsettings; Fedora's default `appmenu:close` shows only close.
  Hidden in full screen.
- Resize zones along the window's edges and L-shaped corners, above the
  rest of the UI so a press there resizes instead of reaching a
  scrollbar; a hairline outlines the window while it isn't maximized.
- Preferences > Use system title bar (shown only where the app draws the
  frame) gives the window back winit's frame at once, without a restart
  (part of #1001). Named as in VectorCraft and PhotoCraft, but GNOME draws
  no title bars for apps, so on GNOME this is winit's basic frame, not
  GNOME's own; the tooltip says so. Saved as `system_title_bar`;
  `system-title-bar` on the control channel.
- PDFCRAFT_TITLEBAR=app|system overrides the detection.

KDE, Sway, Hyprland, COSMIC and X11 offer server-side decorations and
keep the frame their desktop draws; macOS and Windows are unchanged.

Not done: right-clicking the header bar doesn't open GNOME's window menu
(egui has no command for it), the window has no shadow or rounded
corners, the resize zones lie just inside the window rather than outside
it, and Windows still uses its system frame (the rest of #1001).

The new labels (Minimize, Maximize, Restore, Use system title bar and its
tooltip) were added to all 21 translation catalogs. These translations
have not been checked by anyone fluent in those languages and should be
reviewed. The catalogs' hashes in ATTRIBUTION.toml are updated.

Made with Claude Code (Claude Opus 5.5, medium effort). It passes the
workspace quality gates (fmt, clippy, cargo test --workspace, xtask
assets) and was checked by hand on Fedora 44 GNOME (light and dark,
maximized and not, the preference toggled live), but it has not been
exhaustively regression tested.

Co-authored-by: bmh129 <11478682+bmh129@users.noreply.github.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: Brandon Thomas <echelon@gmail.com>
2026-10-13 03:04:13 -04:00
..
a11y Add reviewable text-only PDF auto-tagging (#1440) 2026-10-13 01:02:05 -04:00
annot M5: keep stamps upright on rotated pages (#1398) (#1460) 2026-10-13 01:42:57 -04:00
audit fix(audit): a rectangle drawn as an m/l path is a cover like re (#1521) 2026-10-13 00:07:15 -04:00
automation M3: confirm before opening absolute GoToR paths (#1364) (#1489) 2026-10-13 02:16:21 -04:00
compare Rename PrintCraft to PdfCraft (#174) 2026-10-07 16:03:57 -04:00
content fix(content): count an unreadable inline image with no EI as skipped (#1318) (#1418) 2026-10-12 08:38:01 -04:00
cos Security: fix three audit findings in redaction and signature validation (#1631) 2026-10-13 00:14:40 -04:00
create M10: BigTIFF and strict GIF detection in Create PDF; XDP data in format parity (#1453) 2026-10-13 01:19:48 -04:00
crypt Issue #1185: Protect refuses passwords that encryption would make empty or equal (#1186) 2026-10-11 18:30:00 -04:00
edit M7: keep Arabic ActualText ligatures in their word (#1473) 2026-10-13 01:52:22 -04:00
engine M3: confirm before opening absolute GoToR paths (#1364) (#1489) 2026-10-13 02:16:21 -04:00
export M10: Presentation (.pptx) export (#1137) (#1162) 2026-10-11 21:55:25 -04:00
filters Rename PrintCraft to PdfCraft (#174) 2026-10-07 16:03:57 -04:00
fonts F1, F2: adapt to main and re-pin the Arabic layout golden 2026-10-12 13:57:43 -07:00
forms Forms #294: detect rectangles drawn with closed line paths (#1596) 2026-10-13 00:10:30 -04:00
geom M10: Enhance camera image finds the document's edges; rotate, crop or organize after Enhance page (part 3 of #1008) (#1027) 2026-10-11 12:31:23 -04:00
js XFA: a script's time starts when its context is ready, and a value reaches every field bound to its data node (#1589) 2026-10-13 00:10:22 -04:00
measure Issue #432: global Units preference (mm, cm, in, pt), defaulting to the system region (#463) 2026-10-11 15:33:54 -04:00
model M2: pages with /UserUnit are shown at their size in points, as in Acrobat (#722) 2026-10-10 06:19:31 -04:00
ocr M10: edit OCR text on scanned pages so the change shows (#1397) 2026-10-12 08:16:42 -04:00
optimize M11: strip redundant ASCII stream wrappers during optimization (#989) 2026-10-11 13:21:20 -04:00
organize M4: preserve shared Type 3 glyph resources during extraction (#1500) 2026-10-13 02:34:12 -04:00
platform fix(theme): complete Linux System appearance tracking (#1017) 2026-10-11 15:23:49 -04:00
preflight fix(preflight): find colour operators after any PDF whitespace (#1334) (#1373) 2026-10-12 06:25:42 -04:00
print fix(print): custom pages-per-sheet counts no longer overfill sheets (#1336) (#1430) 2026-10-13 00:41:45 -04:00
redact Keep undrawn comments and accurate search hits (#1317, #1327, #1302, #1315, #1340) (#1442) 2026-10-13 01:09:36 -04:00
render M2: keep byte boundaries in packed TIFF-predictor rows (#1499) 2026-10-13 02:27:26 -04:00
sign Security: fix three audit findings in redaction and signature validation (#1631) 2026-10-13 00:14:40 -04:00
ui-egui M3: draw a GNOME-style title bar on Wayland (#553) (#1530) 2026-10-13 03:04:13 -04:00
xfa XFA: place positioned objects by their anchorType (fixes #1637) (#1639) 2026-10-13 00:16:34 -04:00
xfdf fix(xfdf): preserve quoted empty CSV values (#1541) 2026-10-13 00:07:40 -04:00