Commit Graph
1728 Commits
Author SHA1 Message Date
skylar taylor-barrick 18e2d45420 Merge pull request #6318 from robertoffmoura/fix/floating-selection-move-lag
Fix lag when dragging a floating selection with the Move tool
2026-10-21 14:25:55 -06:00
Roberto Moura f4ea3139d7 Keep selection snap targets when dragging a guide with the Move tool 2026-10-21 16:37:54 +00:00
Roberto Moura 8352b26c1a Fix lag when dragging a floating selection with the Move tool
- Replace whole-region Vec<f32> read_region/write_region in CutParts::new
  with tile-parallel cut_piece + try_fill_surface/try_clear_surface,
  sharing interior Arc<Tile> allocations in O(1) and activating the
  solid_tile hole-fill fast path on Background and mask targets.
- Cache piece_bounds on CutParts so CutParts::place avoids scanning tile
  content bounds on every drag frame.
- Parallelize composite_over across top tiles with Rayon and share fully
  opaque top tiles by Arc<Tile> clone in O(1), preserving COW tile
  identity for GPU canvas uploads.
- Parallelize Surface::translated across target tiles with Rayon and
  prune cleared tiles in-place inside edit_tiles.
- Skip zero-offset floating preview generation on pointer-down in
  move_ui::floating_doc.
- Exclude SnapKind::Selection when moving selected pixels with the Move
  tool so small initial drags do not snap back to (0, 0).
- Keep navigator_plain active during Move/Brush/Patch drags on a GPU
  canvas so navigator_gpu is not evicted into a synchronous full-document
  CPU thumbnail composite on the first drag frame.
- Parallelize row normalization in compose::render_reduced_in_bands and
  add a direct read_rgba_into fast path for unmasked Normal layers over
  an empty backdrop.
2026-10-21 13:21:10 +00:00
aiongg abd0582add Integration: the Type units test makes its type after the resolution change, for #7125
#7125 keeps existing type's pixel size across Image Size, so the #6491 test's 12 pt layer, made before the change to 144 ppi, became 6 pt. The test now creates its layer at 144 ppi; its assertions are unchanged.
2026-10-21 05:04:04 +00:00
aiongg 2a1ac6a6fb Merge PR #6208: Preferences: Save in Background off saves in the foreground (#6207)
# Conflicts:
#	docs/gaps.md
#	docs/scorecard.md
2026-10-21 05:04:04 +00:00
aiongg 050caf9ecd Merge PR #6681: Content-Aware Move: live preview for large selections (TOOL-213-4, #6680)
# Conflicts:
#	docs/gaps.md
#	docs/scorecard.md
#	docs/target-app-parity.md
2026-10-21 05:04:04 +00:00
aiongg 4804148ff9 Merge PR #3759: Pattern Stamp and Background Eraser draw live; Spot Healing shows its heal area (TOOL-213-7, #3754)
# Conflicts:
#	docs/gaps.md
#	docs/target-app-parity.md
2026-10-21 05:04:04 +00:00
aiongg f163e3ce0b Merge PR #6211: Zoom tool: hold to zoom continuously with Animated Zoom on (#6210)
# Conflicts:
#	docs/gaps.md
#	docs/scorecard.md
#	docs/ui-parity.md
2026-10-21 05:04:03 +00:00
aiongg 1a5d22ca94 Merge PR #6708: Paths: the path selected in the Paths panel is drawn on the canvas (#6550)
# Conflicts:
#	crates/ui-egui/src/vector_ui.rs
2026-10-21 05:04:03 +00:00
aiongg fc371711e6 Merge PR #5847: Shapes: Density and Feather on shape layers (#5846)
# Conflicts:
#	docs/scorecard.md
#	docs/target-app-parity.md
#	docs/ui-parity.md
2026-10-21 05:04:03 +00:00
aiongg 34c5e7d49e Merge PR #3536: History: set the History Brush source from the panel (history.setSource) (#2966)
# Conflicts:
#	crates/engine/src/commands.rs
#	crates/ops/src/lib.rs
2026-10-21 05:04:02 +00:00
aiongg dc8b8834e0 Merge PR #5889: Image: Bitmap dialog with Output resolution and per-method settings (#5559) 2026-10-21 05:04:01 +00:00
aiongg 40895532aa Merge PR #5840: Export As: Resample menu, incl. Nearest Neighbor (#5838)
# Conflicts:
#	docs/scorecard.md
2026-10-21 05:04:01 +00:00
aiongg 5ec2b90f1b Merge PR #7771: Save for Web: later slices cover earlier ones, covered slices split into pieces (#7770) 2026-10-21 05:03:49 +00:00
aiongg 0028c303e9 Merge PR #6707: Shortcuts: a command shortcut leaves the focused menu bar and runs (#6573) 2026-10-21 01:06:18 +00:00
aiongg bc6a09da25 Merge PR #7037: Match Zoom: matched views stay within each document's zoom range (#7036) 2026-10-21 01:06:18 +00:00
aiongg 12c397a4b9 Merge PR #6989: Control: ui.set rejects zoom, rotation, center and dockWidth beyond f32 range (#6988) 2026-10-21 01:06:18 +00:00
aiongg b5f48b3d7b Merge PR #6213: Tools: each painting tool's brush persists across launches; restored tool options are clamped (#6212)
# Conflicts:
#	docs/scorecard.md
2026-10-21 01:06:17 +00:00
aiongg ac07901f1f Merge PR #6859: Guides: ruler guide snapping rebuilds its targets when snap options change (#6858) 2026-10-21 01:06:17 +00:00
aiongg ce9c669584 Merge PR #6822: Type: paragraph box handles are picked at the unsnapped press (#6819) 2026-10-21 01:06:17 +00:00
aiongg 13a615ca2f Merge PR #6357: Move tool: Ctrl-hover shows the distance to another layer (#4946) 2026-10-21 01:06:17 +00:00
aiongg 6cbfbfeda3 Merge PR #6721: Paths: drag a path row onto the Trash to delete it (#6553) 2026-10-21 01:06:16 +00:00
aiongg 3e6614f92b Merge PR #6719: Paths: Delete Path on a shape layer's path row deletes the layer (#6552) 2026-10-21 01:06:16 +00:00
aiongg d3a78a374a Merge PR #6980: Image Size: Resolution with Resample on keeps the print size in physical units (#6979) 2026-10-21 01:06:15 +00:00
aiongg ef91cec53e Merge PR #7136: Perspective Crop: W and H follow the Point/Pica Size preference (#7135) 2026-10-21 01:06:15 +00:00
aiongg 8b1d4e7eed Merge PR #7131: Perspective Crop: switching documents drops the pending box (#7130) 2026-10-21 01:06:15 +00:00
aiongg 41299afec4 Merge PR #7062: Perspective Crop: a drag without area leaves no crop box (#7061) 2026-10-21 01:06:15 +00:00
aiongg f1cc8ad423 Merge PR #7753: Crop: a typed ratio fits from the frame the edit started with (#7752) 2026-10-21 01:06:15 +00:00
aiongg a0078c3e1f Merge PR #7134: Crop: a refused crop keeps the frame for fixing (#7133) 2026-10-21 01:06:15 +00:00
aiongg a9b71c5e95 Merge PR #7731: Crop: Undo/Redo grey out when the frame has no step left (#7730) 2026-10-21 01:06:15 +00:00
aiongg fb578585fe Merge PR #7089: Crop: in default mode, box Undo/Redo keeps the box in place (#7088) 2026-10-21 01:06:15 +00:00
aiongg 2d14c7ceb7 Merge PR #7128: Crop: Straighten is one box Undo step (#7127) 2026-10-21 01:06:15 +00:00
aiongg 0c26c36e55 Merge PR #7746: Crop: a lost Straighten release no longer hijacks the next drag (#7745) 2026-10-21 01:06:14 +00:00
aiongg 5eafbccc21 Merge PR #7041: Crop: the turn readout never shows -0.0° or -180.0° (#7040) 2026-10-21 01:06:14 +00:00
aiongg 434c276eee Merge PR #7039: Crop: W x H x Resolution follows the Point/Pica Size preference (#7038) 2026-10-21 01:06:14 +00:00
aiongg d1bed2f98d Merge PR #6644: Hue/Saturation: the Lightness track runs black, grey, white (#6539) 2026-10-21 01:06:14 +00:00
aiongg b9404a6eda Merge PR #3534: History: panel menu, Step Forward/Backward and Clear History (#2966) 2026-10-21 01:06:12 +00:00
aiongg 5d1f3ec479 Merge PR #5109: Tests: generated large-file fixtures and a P20 number (#5107)
# Conflicts:
#	docs/scorecard.md
2026-10-21 01:06:10 +00:00
aiongg f679b4cf1f Integration: rustfmt the merged tree, for #6195 and #5857
cargo fmt --check failed on #6195's module order and canvas.rs guard, and on the IMPORT_ONLY line.
2026-10-20 22:07:10 +00:00
aiongg 1f6c7fff60 Integration: keep the folder pickers for Render Video and Video Frames to Layers, for #3223
view_cmds runs before menus.rs, so wrapping these ids replaced main's folder pickers with a text-field dialog and a file picker; file_dialog's render_video test covers the folder route.
2026-10-20 22:07:10 +00:00
aiongg bc1becfca6 Merge PR #3223: fix(ui): wire video menu pickers/dialogs and fix Timeline Stop playback 2026-10-20 22:07:10 +00:00
aiongg b86f525724 Integration: drop the clipboard CI job and the GPU evidence test, for #5587
The ci.yml job is a CI-policy change outside the fix; the ignored evidence test only wrote PR screenshots.
2026-10-20 22:07:10 +00:00
aiongg 92513627da Merge PR #5587: Preserve editable clipboard contents when native reads fail 2026-10-20 22:07:10 +00:00
aiongg 77cd7118ee Merge PR #6195: fix(tablet): support stylus barrel button and brush resize on Windows (#5905, #5364) 2026-10-20 22:07:10 +00:00
aiongg db56aeb10a Merge PR #7813: Choose the graphics adapter on multi-GPU Linux machines (#1885)
# Conflicts:
#	apps/photocraft/src/gpu_startup.rs
#	crates/ui-egui/src/i18n/cs.tsv
#	crates/ui-egui/src/i18n/de.tsv
#	crates/ui-egui/src/i18n/el.tsv
#	crates/ui-egui/src/i18n/es.tsv
#	crates/ui-egui/src/i18n/fr.tsv
#	crates/ui-egui/src/i18n/hu.tsv
#	crates/ui-egui/src/i18n/id.tsv
#	crates/ui-egui/src/i18n/it.tsv
#	crates/ui-egui/src/i18n/ja.tsv
#	crates/ui-egui/src/i18n/ko.tsv
#	crates/ui-egui/src/i18n/nl.tsv
#	crates/ui-egui/src/i18n/pl.tsv
#	crates/ui-egui/src/i18n/pt-br.tsv
#	crates/ui-egui/src/i18n/ru.tsv
#	crates/ui-egui/src/i18n/sr.tsv
#	crates/ui-egui/src/i18n/tr.tsv
#	crates/ui-egui/src/i18n/uk.tsv
#	crates/ui-egui/src/i18n/vi.tsv
#	crates/ui-egui/src/i18n/zh-hans.tsv
#	crates/ui-egui/src/i18n/zh-hant.tsv
#	crates/ui-egui/src/prefs_ui.rs
2026-10-20 18:41:25 +00:00
aiongg 8d00c31ddf Merge PR #6711: fix(ui): disable Batch without a recorded action
# Conflicts:
#	crates/ui-egui/src/view_cmds.rs
2026-10-20 18:40:47 +00:00
aiongg 1ca8a8aad0 Merge PR #7964: Preserve near-black ICC colors on the GPU canvas
# Conflicts:
#	contributors/people.toml
2026-10-20 18:39:43 +00:00
aiongg 8e5b71e6e3 Merge PR #6909: perf(camera-raw): develop the preview off the UI thread (#5964)
# Conflicts:
#	contributors/people.toml
2026-10-20 18:39:39 +00:00
aiongg 54a5146754 Merge PR #7728: Paragraph panel: grey the justify buttons on point text (#7713) 2026-10-20 18:39:29 +00:00
aiongg e2169d0dfd Merge PR #7847: Print: Portrait and Landscape in the Print dialog on Windows 2026-10-20 18:39:29 +00:00