fix : Pen tool collinear constraint incorrectly modifying segment handles#3863
fix : Pen tool collinear constraint incorrectly modifying segment handles#3863Annonnymmousss wants to merge 1 commit intoGraphiteEditor:masterfrom
Conversation
Summary of ChangesHello, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed! This pull request addresses a bug in the Pen tool where the collinear constraint was incorrectly modifying segment handles, particularly when creating new segments. The fix introduces a specific condition to prevent the constraint from being applied in scenarios where it would lead to unintended handle adjustments, ensuring smoother and more predictable behavior during path creation. Highlights
Changelog
Activity
Using Gemini Code AssistThe full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips. Invoking Gemini You can request assistance from Gemini at any point by creating a comment using either
Customization To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a Limitations & Feedback Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here. You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension. Footnotes
|
There was a problem hiding this comment.
Code Review
This pull request fixes an issue where the pen tool's collinear constraint was incorrectly modifying segment handles. The change introduces a condition to skip applying the collinear constraint when dragging a new handle from a junction point or the start of a path. The logic appears correct. I've suggested a small refactoring to improve the readability of the new condition.
| let should_skip = | ||
| self.handle_type == TargetHandle::FuturePreviewOutHandle && self.handle_end.is_none() && self.prior_segment_endpoint.map_or(true, |ep| vector.all_connected(ep).count() >= 2); |
There was a problem hiding this comment.
The condition to determine should_skip is a bit complex to parse in a single line. Breaking it down into smaller, well-named variables would improve readability and make the intent clearer.
| let should_skip = | |
| self.handle_type == TargetHandle::FuturePreviewOutHandle && self.handle_end.is_none() && self.prior_segment_endpoint.map_or(true, |ep| vector.all_connected(ep).count() >= 2); | |
| let is_creating_new_handle = self.handle_type == TargetHandle::FuturePreviewOutHandle && self.handle_end.is_none(); | |
| let is_at_junction_or_start = self.prior_segment_endpoint.map_or(true, |ep| vector.all_connected(ep).count() >= 2); | |
| let should_skip = is_creating_new_handle && is_at_junction_or_start; |
There was a problem hiding this comment.
Is it required? I guess it is pretty clear.
discord : https://discord.com/channels/731730685944922173/731738914812854303/1478863567460634727
After fix clip :
Screen_Recording_2026-03-06_at_7.15.36_AM.mov