fix(arrows): clamp arrow terminals to frame boundary when bound shape is clipped#7932
Merged
steveruizok merged 2 commits intomainfrom Feb 25, 2026
Merged
fix(arrows): clamp arrow terminals to frame boundary when bound shape is clipped#7932steveruizok merged 2 commits intomainfrom
steveruizok merged 2 commits intomainfrom
Conversation
… is clipped When a shape inside a frame extends beyond the frame boundary, arrows bound to that shape now terminate at the frame's clip boundary instead of at the shape's actual (invisible) boundary. Adds clampArrowTerminalToMask() which post-processes arrow terminal points after shape geometry intersection, checking if the terminal falls outside the bound shape's mask and clamping it to the nearest mask boundary crossing. Closes #7824
|
The latest updates on your projects. Learn more about Vercel for GitHub.
4 Skipped Deployments
|
Deploying with
|
| Status | Name | Latest Commit | Updated (UTC) |
|---|---|---|---|
| 🔵 In progress View logs |
image-pipeline-template | a9811a6 | Feb 19 2026, 03:50 PM |
Deploying with
|
| Status | Name | Latest Commit | Updated (UTC) |
|---|---|---|---|
| 🔵 In progress View logs |
multiplayer-template | a9811a6 | Feb 19 2026, 03:50 PM |
Deploying with
|
| Status | Name | Latest Commit | Preview URL | Updated (UTC) |
|---|---|---|---|---|
| ✅ Deployment successful! View logs |
image-pipeline-template | a9811a6 | Commit Preview URL Branch Preview URL |
Feb 19 2026, 03:54 PM |
Deploying with
|
| Status | Name | Latest Commit | Updated (UTC) |
|---|---|---|---|
| 🔵 In progress View logs |
branching-chat-template | a9811a6 | Feb 19 2026, 03:50 PM |
Contributor
|
Not sure how this should behave so feel free to brush me off Screen.Recording.2026-02-24.at.14.29.59.mov |
Collaborator
Author
I think we'll have to live with this one: the only alternative I can think of is to extend the arrow past the anchor point, which is usually a one-way ticket to arrow-bug city. |
steveruizok
added a commit
that referenced
this pull request
Feb 27, 2026
Add 12 new entries from PRs merged since v4.4.0: - Featured: click-through on transparent image pixels (#7942) - API: enum-to-const-object refactor (#8084) - Improvements: SVG sanitizer (#7896), save-on-blur (#8037) - Bug fixes: cross-origin download (#8090), zero-size draw (#8067), rich text toolbar cleanup (#8050), zoom threshold (#8040), selection foreground fallback (#8011), sticky note SVG shadow (#7934), arrow frame clamping (#7932), zero pressure draw (#5693)
3 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes #7824. When a shape inside a frame extends beyond the frame boundary, arrows bound to that shape would terminate at the shape's actual boundary rather than at the frame's clip boundary, creating a visual disconnect where the arrow appears to point into empty space.
pr-7932-walkthrough.mp4
This PR adds a
clampArrowTerminalToMask()post-processing step that runs after arrow-shape geometry intersection. If the computed terminal point falls outside the bound shape's mask (the frame clip boundary), it casts a ray from the binding anchor through the terminal to find where it crosses the mask polygon, and clamps the terminal to that point.Change type
bugfixTest plan
Release notes