From ebef65e90568cabd2ef73cc19e87cbe8617d6c5e Mon Sep 17 00:00:00 2001 From: SmallJoker Date: Tue, 20 May 2025 20:37:16 +0200 Subject: [PATCH] Formspec: do not draw button backgrounds if border=false --- src/gui/guiButtonImage.cpp | 12 ++++++++++++ src/gui/guiButtonImage.h | 3 +++ 2 files changed, 15 insertions(+) diff --git a/src/gui/guiButtonImage.cpp b/src/gui/guiButtonImage.cpp index fd3481d85..f085d4383 100644 --- a/src/gui/guiButtonImage.cpp +++ b/src/gui/guiButtonImage.cpp @@ -24,6 +24,18 @@ GUIButtonImage::GUIButtonImage(gui::IGUIEnvironment *environment, sendToBack(m_image.get()); } +void GUIButtonImage::draw() +{ + if (isDrawingBorder()) { + // `GUIButton` also allows drawing different textures depending on + // `EGUI_BUTTON_STATE` --> Skip everything if the border is disabled (else case). + GUIButton::draw(); + } else { + IGUIElement::draw(); + } +} + + void GUIButtonImage::setForegroundImage(irr_ptr image, const core::rect &middle) { diff --git a/src/gui/guiButtonImage.h b/src/gui/guiButtonImage.h index c07be178b..dd84b2569 100644 --- a/src/gui/guiButtonImage.h +++ b/src/gui/guiButtonImage.h @@ -19,6 +19,9 @@ public: s32 id, core::rect rectangle, ISimpleTextureSource *tsrc, bool noclip = false); + //! draws the element and its children + virtual void draw() override; + void setForegroundImage(irr_ptr image = nullptr, const core::rect &middle = core::rect());