summaryrefslogtreecommitdiff
path: root/src/gui/guiButtonImage.cpp
diff options
context:
space:
mode:
authorHugues Ross <hugues.ross@gmail.com>2019-12-14 18:05:36 -0500
committersfan5 <sfan5@live.de>2019-12-16 19:26:57 +0100
commite42faae8d9db2381295fcbc85c860d328a3fe121 (patch)
tree3e826c880583c4e1833d1c27d4953f5a653e65c6 /src/gui/guiButtonImage.cpp
parentbd4b8d40b31301700b6405d0952fe692b65b28f5 (diff)
downloadminetest-e42faae8d9db2381295fcbc85c860d328a3fe121.tar.gz
minetest-e42faae8d9db2381295fcbc85c860d328a3fe121.tar.bz2
minetest-e42faae8d9db2381295fcbc85c860d328a3fe121.zip
Remove the dependency on FGIMG/BGIMG from the hovered/pressed variants
- Make guiButtonImage support null images properly
Diffstat (limited to 'src/gui/guiButtonImage.cpp')
-rw-r--r--src/gui/guiButtonImage.cpp21
1 files changed, 16 insertions, 5 deletions
diff --git a/src/gui/guiButtonImage.cpp b/src/gui/guiButtonImage.cpp
index 8796b845d..02d920277 100644
--- a/src/gui/guiButtonImage.cpp
+++ b/src/gui/guiButtonImage.cpp
@@ -46,7 +46,11 @@ bool GUIButtonImage::OnEvent(const SEvent& event)
EGUI_BUTTON_IMAGE_STATE imageState = getImageState(isPressed(), m_foreground_images);
video::ITexture *texture = m_foreground_images[(u32)imageState].Texture;
if (texture != nullptr)
+ {
m_image->setImage(texture);
+ }
+
+ m_image->setVisible(texture != nullptr);
return result;
}
@@ -110,16 +114,23 @@ void GUIButtonImage::setFromStyle(const StyleSpec &style, ISimpleTextureSource *
video::IVideoDriver *driver = Environment->getVideoDriver();
+ const core::position2di buttonCenter(AbsoluteRect.getCenter());
+ core::position2d<s32> geom(buttonCenter);
if (style.isNotDefault(StyleSpec::FGIMG)) {
video::ITexture *texture = style.getTexture(StyleSpec::FGIMG, tsrc);
- video::ITexture *hovered_texture = style.getTexture(StyleSpec::FGIMG_HOVERED, tsrc, texture);
- video::ITexture *pressed_texture = style.getTexture(StyleSpec::FGIMG_PRESSED, tsrc, texture);
-
- const core::position2di buttonCenter(AbsoluteRect.getCenter());
- core::position2d<s32> geom(buttonCenter);
setForegroundImage(guiScalingImageButton(driver, texture, geom.X, geom.Y));
+ setScaleImage(true);
+ }
+ if (style.isNotDefault(StyleSpec::FGIMG_HOVERED)) {
+ video::ITexture *hovered_texture = style.getTexture(StyleSpec::FGIMG_HOVERED, tsrc);
+
setHoveredForegroundImage(guiScalingImageButton(driver, hovered_texture, geom.X, geom.Y));
+ setScaleImage(true);
+ }
+ if (style.isNotDefault(StyleSpec::FGIMG_PRESSED)) {
+ video::ITexture *pressed_texture = style.getTexture(StyleSpec::FGIMG_PRESSED, tsrc);
+
setPressedForegroundImage(guiScalingImageButton(driver, pressed_texture, geom.X, geom.Y));
setScaleImage(true);
}