Skip to content

Add rich-text tooltips for blocks #135

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

Merged
merged 2 commits into from
Jul 16, 2024
Merged

Add rich-text tooltips for blocks #135

merged 2 commits into from
Jul 16, 2024

Conversation

wjt
Copy link
Member

@wjt wjt commented Jul 16, 2024

This overrides the tooltip of all blocks to be a custom control (a thin wrapper around RichTextLabel) and adds a couple of new tooltips that take advantage of this:

image

I don't want to spend too much time on the tooltips themselves because we intend to review the wording of the blocks themselves & terminology used in conjuction with the learning team – and potentially changing the level of abstraction of some of the blocks. Similarly I could imagine making the tooltips fancier by, for example, listing the parameters, adding a note about what kind of block it is, etc. But again I think this would be better done in conjuction with the learning team. So here I'm focusing on just having the capability to use rich text in tooltips.

https://phabricator.endlessm.com/T35540

@wjt wjt requested a review from wnbaum July 16, 2024 10:53
@wjt wjt force-pushed the T35540-rich-text-tooltips branch from 5cea5c8 to 90e8458 Compare July 16, 2024 11:05
wjt added 2 commits July 16, 2024 12:11
By default, a plain-text label is used which does not support rich text
formatting.

Define a `Tooltip` scene; and override `Control._make_custom_tooltip()` in `Block` to
return an instance of this scene.

`Tooltip` is initially just a `RichTextLabel` with BBCode enabled and a custom
minimum size set as suggested by the `_make_custom_tooltip()` documentation:

> Note: The tooltip is shrunk to minimal size. If you want to ensure it's fully
> visible, you might want to set its `custom_minimum_size` to some non-zero
> value.

We override the theme styles on the `RichTextLabel` to match the styles used in
the built-in inspector's help tooltips. In particular, bold, italic and
bold-italic text doesn't work without overriding these styles. The [BBCode in
RichTextLabel][0] documentation claims:

> If no custom bold or italic fonts are defined, faux bold and italic fonts
> will be generated by Godot.

but empirically this is not true.

The Editor Theme Explorer plugin
<https://github.com/YuriSizov/godot-editor-theme-explorer> was useful, as was
reading the editor source code, specifically `editor_fonts.cpp` and
`editor_help.cpp`.

None of the existing `tooltip_text` properties in the codebase use the `[`
character that is used by BBCode tags, so there is no need to adjust the
existing tooltips to keep displaying as they previously did.

https://phabricator.endlessm.com/T35540

[0]: https://docs.godotengine.org/en/stable/tutorials/ui/bbcode_in_richtextlabel.html#reference
@wjt wjt force-pushed the T35540-rich-text-tooltips branch from 90e8458 to db819ee Compare July 16, 2024 11:12
@manuq
Copy link
Contributor

manuq commented Jul 16, 2024

I spent some time trying to find a better option than doing the font overrides in a script, but it seems this is the way to go.

Changing the editor main font worked too:
Captura desde 2024-07-16 08-48-19

@manuq manuq merged commit 8a12028 into main Jul 16, 2024
2 checks passed
@manuq manuq deleted the T35540-rich-text-tooltips branch July 16, 2024 11:52
@wjt
Copy link
Member Author

wjt commented Jul 16, 2024

I spent some time trying to find a better option than doing the font overrides in a script,

I know, right? I spent a long time trying to find a better way.

In the end I searched GitHub for @tool and RichTextLabel and this really does seem to be the most common way.

Maybe I'll turn to Discord.

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