From 409396370660126d547542cad63fb4e658df90c8 Mon Sep 17 00:00:00 2001 From: NaiJi Date: Thu, 26 Aug 2021 21:36:09 +0300 Subject: [PATCH] Fix color palette --- src/gui/widgets/button.cpp | 2 -- src/gui/widgets/cascademenubutton.cpp | 19 ++++++++++++++++--- src/gui/widgets/cascademenubutton.h | 4 ++++ src/gui/widgets/pushbutton.cpp | 1 + src/gui/widgets/widget.cpp | 5 +++++ src/gui/widgets/widget.h | 3 +++ 6 files changed, 29 insertions(+), 5 deletions(-) diff --git a/src/gui/widgets/button.cpp b/src/gui/widgets/button.cpp index 9bc8f22..df41122 100644 --- a/src/gui/widgets/button.cpp +++ b/src/gui/widgets/button.cpp @@ -7,8 +7,6 @@ Button::Button(const std::string &text, const std::shared_ptr& font, u _button_text.setFillColor(sf::Color::Black); _button_text.setCharacterSize(font_size); _button_text.setFont(*_font); - _button_content.setFillColor(sf::Color::White); - } void Button::update() diff --git a/src/gui/widgets/cascademenubutton.cpp b/src/gui/widgets/cascademenubutton.cpp index 4da65cc..aeae40a 100644 --- a/src/gui/widgets/cascademenubutton.cpp +++ b/src/gui/widgets/cascademenubutton.cpp @@ -3,7 +3,11 @@ CascadeMenuButton::CascadeMenuButton(const std::string& text, const std::shared_ptr &font, unsigned int font_size) : Button(text, font, font_size) -{} +{ + _color_idle = sf::Color(230, 230, 230); + _color_hover = sf::Color(84, 158, 253); + _button_content.setFillColor(_color_idle); +} void CascadeMenuButton::input(const sf::Event& event) { @@ -18,14 +22,17 @@ void CascadeMenuButton::input(const sf::Event& event) case sf::Event::MouseMoved: if (isUnderMouse(event.mouseMove.x, event.mouseMove.y)) { - _button_content.setFillColor(sf::Color(84, 158, 253)); + _button_content.setFillColor(_color_hover); _submenu->lock(); _submenu->setVisibility(true); } else { - _button_content.setFillColor(sf::Color::White); _submenu->unlock(); + if (!_submenu->isVisible()) + { + _button_content.setFillColor(sf::Color(_color_idle)); + } } break; } @@ -56,3 +63,9 @@ void CascadeMenuButton::resetRect(const std::shared_ptr& submenu) _button_content.getPosition().y}); } } + +void CascadeMenuButton::setFillColors(sf::Color&& idle_color, sf::Color&& hover_color) +{ + _color_idle = idle_color; + _color_hover = hover_color; +} diff --git a/src/gui/widgets/cascademenubutton.h b/src/gui/widgets/cascademenubutton.h index a58ceb2..76f7869 100644 --- a/src/gui/widgets/cascademenubutton.h +++ b/src/gui/widgets/cascademenubutton.h @@ -14,8 +14,12 @@ public: void setSubmenu(const std::shared_ptr& submenu); const std::shared_ptr submenu() const; void resetRect(const std::shared_ptr& submenu); + void setFillColors(sf::Color&& idle_color, sf::Color&& hover_color); private: std::shared_ptr _submenu; + + sf::Color _color_idle; + sf::Color _color_hover; }; diff --git a/src/gui/widgets/pushbutton.cpp b/src/gui/widgets/pushbutton.cpp index 1893823..2954cc0 100644 --- a/src/gui/widgets/pushbutton.cpp +++ b/src/gui/widgets/pushbutton.cpp @@ -6,6 +6,7 @@ PushButton::PushButton(const std::string& text, const std::shared_ptr { _color_idle = sf::Color(230, 230, 230); _color_pressed = sf::Color(200, 200, 200); + _button_content.setFillColor(_color_idle); } void PushButton::input(const sf::Event& event) diff --git a/src/gui/widgets/widget.cpp b/src/gui/widgets/widget.cpp index e4b8915..96dbb22 100644 --- a/src/gui/widgets/widget.cpp +++ b/src/gui/widgets/widget.cpp @@ -30,6 +30,11 @@ void Widget::setVisibility(bool is_visible) child->setVisibility(_is_visible); } +bool Widget::isVisible() const +{ + return _is_visible; +} + void Widget::addChild(const std::shared_ptr& child) { child->setParent(shared_from_this()); diff --git a/src/gui/widgets/widget.h b/src/gui/widgets/widget.h index 56e2bfd..593ac9f 100644 --- a/src/gui/widgets/widget.h +++ b/src/gui/widgets/widget.h @@ -19,8 +19,11 @@ public: virtual bool isUnderMouse(int mouse_x, int mouse_y) const = 0; virtual void setVisibility(bool is_visible = true); + bool isVisible() const; + void addChild(const std::shared_ptr& child); void setParent(const std::shared_ptr& parent); + void blockBy(const std::shared_ptr& blocker); void unblock();