From b9f6832347e5a0ca9e10f0d45b2eb1a4c5d82d28 Mon Sep 17 00:00:00 2001 From: DS Date: Tue, 13 Sep 2022 13:48:28 +0200 Subject: Fix tooltips for dropdown, scrollbar and more (#12747) --- src/gui/guiFormSpecMenu.cpp | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/src/gui/guiFormSpecMenu.cpp b/src/gui/guiFormSpecMenu.cpp index 1f9914e72..62936743c 100644 --- a/src/gui/guiFormSpecMenu.cpp +++ b/src/gui/guiFormSpecMenu.cpp @@ -825,9 +825,9 @@ void GUIFormSpecMenu::parseImage(parserData* data, const std::string &element) core::rect middle; if (parts.size() >= 4) parseMiddleRect(parts[3], &middle); - + // Temporary fix for issue #12581 in 5.6.0. - // Use legacy image when not rendering 9-slice image because GUIAnimatedImage + // Use legacy image when not rendering 9-slice image because GUIAnimatedImage // uses NNAA filter which causes visual artifacts when image uses alpha blending. gui::IGUIElement *e; @@ -3643,13 +3643,21 @@ void GUIFormSpecMenu::drawMenu() #endif bool hovered_element_found = false; - if (hovered != NULL) { + if (hovered) { if (m_show_debug) { core::rect rect = hovered->getAbsoluteClippingRect(); driver->draw2DRectangle(0x22FFFF00, rect, &rect); } - s32 id = hovered->getID(); + // find the formspec-element of the hovered IGUIElement (a parent) + s32 id; + for (gui::IGUIElement *hovered_fselem = hovered; hovered_fselem; + hovered_fselem = hovered_fselem->getParent()) { + id = hovered_fselem->getID(); + if (id != -1) + break; + } + u64 delta = 0; if (id == -1) { m_old_tooltip_id = id; -- cgit v1.2.3