diff options
author | Hugues Ross <hugues.ross@gmail.com> | 2019-12-14 18:05:36 -0500 |
---|---|---|
committer | sfan5 <sfan5@live.de> | 2019-12-16 19:26:57 +0100 |
commit | e42faae8d9db2381295fcbc85c860d328a3fe121 (patch) | |
tree | 3e826c880583c4e1833d1c27d4953f5a653e65c6 /src | |
parent | bd4b8d40b31301700b6405d0952fe692b65b28f5 (diff) | |
download | minetest-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')
-rw-r--r-- | src/gui/guiButton.cpp | 17 | ||||
-rw-r--r-- | src/gui/guiButtonImage.cpp | 21 |
2 files changed, 28 insertions, 10 deletions
diff --git a/src/gui/guiButton.cpp b/src/gui/guiButton.cpp index 6518bbd1f..0d69ff143 100644 --- a/src/gui/guiButton.cpp +++ b/src/gui/guiButton.cpp @@ -778,18 +778,25 @@ void GUIButton::setFromStyle(const StyleSpec& style, ISimpleTextureSource *tsrc) setDrawBorder(style.getBool(StyleSpec::BORDER, DrawBorder));
setUseAlphaChannel(style.getBool(StyleSpec::ALPHA, true));
+ const core::position2di buttonCenter(AbsoluteRect.getCenter());
+ core::position2d<s32> geom(buttonCenter);
if (style.isNotDefault(StyleSpec::BGIMG)) {
video::ITexture *texture = style.getTexture(StyleSpec::BGIMG, tsrc);
- video::ITexture *hovered_texture = style.getTexture(StyleSpec::BGIMG_HOVERED, tsrc, texture);
- video::ITexture *pressed_texture = style.getTexture(StyleSpec::BGIMG_PRESSED, tsrc, texture);
-
- const core::position2di buttonCenter(AbsoluteRect.getCenter());
- core::position2d<s32> geom(buttonCenter);
setImage(guiScalingImageButton(
Environment->getVideoDriver(), texture, geom.X, geom.Y));
+ setScaleImage(true);
+ }
+ if (style.isNotDefault(StyleSpec::BGIMG_HOVERED)) {
+ video::ITexture *hovered_texture = style.getTexture(StyleSpec::BGIMG_HOVERED, tsrc);
+
setHoveredImage(guiScalingImageButton(
Environment->getVideoDriver(), hovered_texture, geom.X, geom.Y));
+ setScaleImage(true);
+ }
+ if (style.isNotDefault(StyleSpec::BGIMG_PRESSED)) {
+ video::ITexture *pressed_texture = style.getTexture(StyleSpec::BGIMG_PRESSED, tsrc);
+
setPressedImage(guiScalingImageButton(
Environment->getVideoDriver(), pressed_texture, geom.X, geom.Y));
setScaleImage(true);
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); } |