Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

refactor: use block styles instead of directly specifying block colors #171

Merged
merged 7 commits into from
Sep 5, 2024

Conversation

gonfunko
Copy link
Owner

@gonfunko gonfunko commented Sep 5, 2024

This is one of three PRs across scratch-blocks, scratch-gui and scratch-vm that refactor each package to define block colors as Blockly BlockStyles, instead of using the colour attribute in Block JSON. This has several advantages:

  • Using the colour attribute causes the secondary/tertiary colors to be calculated, and Blockly does so in a way that slightly skews from the colors Scratch specifies. Scratch had previously modified core Blockly to read the secondary/tertiary colors out of the block JSON, but this isn't directly achievable using supported APIs.
  • Using block styles makes it easy to switch themes, and Scratch's themes (currently just the default and a high contrast variant) are now transformed into BlockStyles/Blockly themes.

In addition, these changes fix the coloration of dropdown fields in their various forms to align with Scratch's behavior. The ability for Scratch extensions to specify a custom block color is also preserved, even though that functionality is currently unused.

src/css.js Show resolved Hide resolved
src/fields/field_dropdown.js Show resolved Hide resolved
src/fields/field_variable.js Show resolved Hide resolved
src/renderer/constants.js Show resolved Hide resolved
@gonfunko gonfunko merged commit c9b5c4e into modern-blockly Sep 5, 2024
1 check passed
@gonfunko gonfunko deleted the themes branch September 5, 2024 22:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants