Fix interactive resizing regression from Issue #536 #541
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.
Fix #540
Problem
PR #438 fixed a long-standing issue where resizing the plot window
would cause legends to become misaligned. The fix worked by wrapping
coordinate-dependent calculations inside recordGraphics(), which R
replays when the device is resized.
PR #536 refactored the legend code but inadvertently broke this fix.
The refactoring moved critical calculations outside of
recordGraphics():
When the window is resized, only the final legend() call replays, but
it uses margin/inset values calculated for the original window size.
Fix
Move the margin application, inset calculation, and plot refresh back
inside recordGraphics() via a new tinylegend() helper function:
The tinylegend() function resets to base values on each replay, then
recalculates soma, applies margins, calculates inset, and
draws—ensuring correct positioning after resize.