From 6f359156224604910f3d6a1bb2b8d7b1d9694d94 Mon Sep 17 00:00:00 2001 From: Haoyu Qiu Date: Tue, 8 Oct 2024 08:52:27 +0800 Subject: [PATCH] Allow `Control` to show custom tooltip when tooltip text is empty Co-Authored-By: bruvzg <7645683+bruvzg@users.noreply.github.com> --- scene/main/viewport.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/scene/main/viewport.cpp b/scene/main/viewport.cpp index 169a5dcb014..0cdb23618f8 100644 --- a/scene/main/viewport.cpp +++ b/scene/main/viewport.cpp @@ -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);