From 69a2099c04527404f2d0942f2088b3d22dd75b5a Mon Sep 17 00:00:00 2001 From: Hugues Ross Date: Sat, 12 Oct 2019 12:44:23 -0400 Subject: Add more visual feedback for button states (#8916) - Add style properties for overriding the the hovered/pressed state - By default, hovered buttons are a lighter version of the base color - By default, pressed buttons are a darker version of the base color - Add hovered bg image support for image buttons (style property) --- src/gui/guiButton.h | 38 +++++++++++++++++++++----------------- 1 file changed, 21 insertions(+), 17 deletions(-) (limited to 'src/gui/guiButton.h') diff --git a/src/gui/guiButton.h b/src/gui/guiButton.h index 63e29ccfc..3c353d240 100644 --- a/src/gui/guiButton.h +++ b/src/gui/guiButton.h @@ -102,34 +102,30 @@ public: //! Checks if an override color is enabled virtual bool isOverrideColorEnabled(void) const; + // PATCH //! Sets an image which should be displayed on the button when it is in the given state. virtual void setImage(gui::EGUI_BUTTON_IMAGE_STATE state, - video::ITexture* image=0, + video::ITexture* image=nullptr, const core::rect& sourceRect=core::rect(0,0,0,0)); //! Sets an image which should be displayed on the button when it is in normal state. - virtual void setImage(video::ITexture* image=0) override - { - setImage(gui::EGBIS_IMAGE_UP, image); - } + virtual void setImage(video::ITexture* image=nullptr) override; //! Sets an image which should be displayed on the button when it is in normal state. - virtual void setImage(video::ITexture* image, const core::rect& pos) override - { - setImage(gui::EGBIS_IMAGE_UP, image, pos); - } + virtual void setImage(video::ITexture* image, const core::rect& pos) override; //! Sets an image which should be displayed on the button when it is in pressed state. - virtual void setPressedImage(video::ITexture* image=0) override - { - setImage(gui::EGBIS_IMAGE_DOWN, image); - } + virtual void setPressedImage(video::ITexture* image=nullptr) override; //! Sets an image which should be displayed on the button when it is in pressed state. - virtual void setPressedImage(video::ITexture* image, const core::rect& pos) override - { - setImage(gui::EGBIS_IMAGE_DOWN, image, pos); - } + virtual void setPressedImage(video::ITexture* image, const core::rect& pos) override; + + //! Sets an image which should be displayed on the button when it is in hovered state. + virtual void setHoveredImage(video::ITexture* image=nullptr); + // END PATCH + + //! Sets an image which should be displayed on the button when it is in hovered state. + virtual void setHoveredImage(video::ITexture* image, const core::rect& pos); //! Sets the sprite bank used by the button virtual void setSpriteBank(gui::IGUISpriteBank* bank=0) override; @@ -215,6 +211,10 @@ public: void setColor(video::SColor color); + // PATCH + void setHoveredColor(video::SColor color); + void setPressedColor(video::SColor color); + // END PATCH //! Do not drop returned handle @@ -307,4 +307,8 @@ private: bool ScaleImage; video::SColor Colors[4]; + // PATCH + video::SColor HoveredColors[4]; + video::SColor PressedColors[4]; + // END PATCH }; -- cgit v1.2.3