Alonso Torres
217284b1e1
✨ Improve path operations and edition ( #10807 )
...
* ✨ Improve path operations and edition
* 🐛 Fix floating-point equality issues in path editing
Replace exact equality checks with tolerance-based comparisons
in path editing functions to handle floating-point rounding
differences after transforms, rotations, or curve fitting.
Changes:
- distribute-content: Round coordinates to 0.1 precision before
grouping to ensure coincident nodes move together
- separate-node: Use gpt/close? instead of exact equality to
find nodes with floating-point imprecision
- collision-step: Use mth/close? for tolerance-based comparison
to detect paste collisions correctly
- resolve-edit-fills: Add cycle detection to prevent infinite
loops with corrupted parent chains
Made collision-step, available-offset-step, and resolve-edit-fills
public for better testability.
Added comprehensive tests for all fixes covering both exact and
floating-point coordinate scenarios.
AI-assisted-by: qwen3.7-plus
* 🐛 Fix path editor code review findings
Fix issues identified during code review of path editor enhancements:
- Fix unused binding lint warning in distribute-content that blocked CI
- Fix collision-step floor comparison to use round instead of floor,
correctly detecting collisions when coordinates drift slightly below
integer boundaries
- Fix resolve-edit-fills to recurse through empty parent groups when
searching for inherited fills in nested group hierarchies
- Fix expand-coincident-node-indices to use fuzzy comparison (gpt/close?)
instead of exact equality, handling floating-point divergence after
transforms or rotations
- Remove unreachable dead code in path-point* on-pointer-down handler
- Add tests for collision-step boundary cases, nested group fill
inheritance, and coincident node alignment/flipping
AI-assisted-by: mimo-v2.5-pro
---------
Co-authored-by: Andrey Antukh <niwi@niwi.nz>
2026-08-27 10:51:10 +02:00
..
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2020-02-25 16:24:40 +01:00
2024-11-05 14:21:09 +01:00
2024-11-05 14:21:09 +01:00
2024-11-05 14:21:09 +01:00
2026-03-13 09:16:12 +01:00
2024-11-05 14:21:09 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2025-05-22 13:15:09 +02:00
2025-01-20 11:07:13 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-22 16:45:51 +01:00
2024-03-22 16:45:51 +01:00
2024-03-22 16:45:51 +01:00
2024-03-22 16:45:51 +01:00
2025-01-10 10:44:08 +01:00
2024-03-08 16:07:38 +01:00
2024-07-05 15:26:45 +02:00
2024-07-05 15:26:45 +02:00
2024-07-05 15:26:45 +02:00
2024-07-05 15:26:45 +02:00
2024-07-05 15:26:45 +02:00
2024-07-05 15:26:45 +02:00
2024-07-05 15:26:45 +02:00
2024-07-05 15:26:45 +02:00
2024-07-05 15:26:45 +02:00
2024-07-05 15:26:45 +02:00
2024-07-05 15:26:45 +02:00
2024-07-05 15:26:45 +02:00
2024-07-05 15:26:45 +02:00
2024-07-05 15:26:45 +02:00
2024-07-05 15:26:45 +02:00
2024-07-05 15:26:45 +02:00
2024-07-05 15:26:45 +02:00
2024-07-05 15:26:45 +02:00
2024-07-05 15:26:45 +02:00
2024-07-05 15:26:45 +02:00
2024-07-05 15:26:45 +02:00
2024-07-05 15:26:45 +02:00
2024-07-05 15:26:45 +02:00
2024-07-05 15:26:45 +02:00
2024-07-05 15:26:45 +02:00
2024-07-05 15:26:45 +02:00
2024-07-05 15:26:45 +02:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-10-29 14:23:35 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2025-04-15 12:47:37 +02:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2025-10-01 17:11:19 +02:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2026-06-01 12:49:24 +02:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-05-28 13:44:39 +02:00
2025-04-10 15:02:30 +02:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2025-01-22 14:45:29 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2025-05-19 16:12:46 +02:00
2020-02-25 16:24:40 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2026-08-27 10:51:10 +02:00
2026-08-27 10:51:10 +02:00
2026-08-27 10:51:10 +02:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2021-05-04 10:31:18 +02:00
2024-03-08 16:07:38 +01:00
2021-02-04 13:36:47 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2025-01-10 10:44:08 +01:00
2024-09-17 12:08:17 +02:00
2025-10-01 17:11:19 +02:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2020-02-25 16:24:40 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2023-11-28 09:23:38 +01:00
2025-06-25 13:41:45 +02:00
2025-05-26 12:56:40 +02:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2025-06-05 09:33:54 +02:00
2024-07-02 11:01:43 +02:00
2024-07-02 11:01:43 +02:00
2024-07-02 11:01:43 +02:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2021-10-07 12:04:56 +02:00
2021-10-07 12:04:56 +02:00
2024-04-18 11:39:48 +02:00
2024-03-08 16:07:38 +01:00
2024-07-05 15:09:01 +02:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-07-05 15:09:01 +02:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-11-19 16:41:01 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-07-05 15:09:01 +02:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2025-05-20 17:27:04 +02:00
2024-10-25 17:45:47 +02:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2026-08-27 10:51:10 +02:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2026-07-22 16:13:38 +02:00
2026-03-23 11:00:29 +01:00
2024-03-08 16:07:38 +01:00
2026-03-23 11:00:29 +01:00
2024-03-08 16:07:38 +01:00
2026-03-23 11:00:29 +01:00
2026-07-22 16:13:38 +02:00
2026-03-23 11:00:29 +01:00
2026-07-22 16:13:38 +02:00
2026-03-23 11:00:29 +01:00
2026-03-23 11:00:29 +01:00
2024-03-08 16:07:38 +01:00
2026-07-22 16:13:38 +02:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2026-03-23 11:00:29 +01:00
2024-03-08 16:07:38 +01:00
2026-07-22 16:13:38 +02:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2025-06-30 11:06:54 +02:00
2025-06-18 15:55:13 +02:00
2025-06-30 11:06:54 +02:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2025-06-30 11:06:54 +02:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2025-01-10 10:44:08 +01:00
2025-01-10 10:44:08 +01:00
2025-01-10 10:44:08 +01:00
2025-08-25 18:52:39 +02:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-02-12 16:29:47 +01:00
2024-02-12 16:29:47 +01:00
2024-02-12 16:29:47 +01:00
2024-02-12 16:29:47 +01:00
2025-02-17 16:47:25 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-08 16:07:38 +01:00
2024-03-12 18:00:42 +01:00