Merge pull request #97961 from timothyqiu/force-tooltip

Allow `Control` to show custom tooltip when tooltip text is empty
This commit is contained in:
Thaddeus Crews 2024-10-14 14:09:49 -05:00
commit ba9e98f447
No known key found for this signature in database
GPG Key ID: 62181B86FE9E5D84

View File

@ -1448,7 +1448,11 @@ void Viewport::_gui_show_tooltip() {
&tooltip_owner);
gui.tooltip_text = gui.tooltip_text.strip_edges();
if (gui.tooltip_text.is_empty()) {
// Controls can implement `make_custom_tooltip` to provide their own tooltip.
// This should be a Control node which will be added as child to a TooltipPanel.
Control *base_tooltip = tooltip_owner ? tooltip_owner->make_custom_tooltip(gui.tooltip_text) : nullptr;
if (gui.tooltip_text.is_empty() && !base_tooltip) {
return; // Nothing to show.
}
@ -1469,10 +1473,6 @@ void Viewport::_gui_show_tooltip() {
// Ensure no opaque background behind the panel as its StyleBox can be partially transparent (e.g. corners).
panel->set_transparent_background(true);
// Controls can implement `make_custom_tooltip` to provide their own tooltip.
// This should be a Control node which will be added as child to a TooltipPanel.
Control *base_tooltip = tooltip_owner->make_custom_tooltip(gui.tooltip_text);
// If no custom tooltip is given, use a default implementation.
if (!base_tooltip) {
gui.tooltip_label = memnew(Label);