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