google / blockly

The web-based visual programming editor.
https://developers.google.com/blockly/
Apache License 2.0
12.51k stars 3.72k forks source link

fix: Fix bug that caused fields in the flyout to use the main workspace's scale. #8607

Closed gonfunko closed 1 month ago

gonfunko commented 1 month ago

The basics

The details

Resolves

Fixes #8596

Proposed Changes

This PR introduces a new WorkspaceSvg.getAbsoluteScale() method that returns the absolute scale of a workspace, taking into account whether it is in a flyout, nested in one or more parent workspaces, mutator editors, etc. Workspace scaling is somewhat counterintuitive in that workspaces that are children of one another have multiplicative scaling, because scaling is achieved through transforms and those apply to child elements and compound.

The PR also updates field editors, which are visually associated with a particular workspace but live at the top of the DOM, to use the absolute scale of their visually-associated workspace.