diff --git a/src/slic3r/GUI/Widgets/Button.cpp b/src/slic3r/GUI/Widgets/Button.cpp index 54b10c4b1..7972d51e6 100644 --- a/src/slic3r/GUI/Widgets/Button.cpp +++ b/src/slic3r/GUI/Widgets/Button.cpp @@ -26,8 +26,9 @@ Button::Button() , text_color(*wxBLACK) { background_color = StateColor( - std::make_pair(*wxLIGHT_GREY, (int) StateColor::Checked), - std::make_pair(*wxLIGHT_GREY, (int) StateColor::Hovered), + std::make_pair(0x00AE42, (int) StateColor::Checked), + std::make_pair(*wxLIGHT_GREY, (int) StateColor::Hovered), + std::make_pair(0x37EE7C, (int) StateColor::Hovered | StateColor::Checked), std::make_pair(*wxWHITE, (int) StateColor::Normal)); } diff --git a/src/slic3r/GUI/Widgets/SpinInput.cpp b/src/slic3r/GUI/Widgets/SpinInput.cpp index 4d96d849e..f970a6a96 100644 --- a/src/slic3r/GUI/Widgets/SpinInput.cpp +++ b/src/slic3r/GUI/Widgets/SpinInput.cpp @@ -27,7 +27,6 @@ END_EVENT_TABLE() SpinInput::SpinInput() : state_handler(this) , border_color(std::make_pair(0xDBDBDB, (int) StateColor::Disabled), - std::make_pair(0x00AE42, (int) StateColor::Focused), std::make_pair(0x00AE42, (int) StateColor::Hovered), std::make_pair(0xDBDBDB, (int) StateColor::Normal)) , text_color(std::make_pair(0xACACAC, (int) StateColor::Disabled), std::make_pair(*wxBLACK, (int) StateColor::Normal)) diff --git a/src/slic3r/GUI/Widgets/StateColor.cpp b/src/slic3r/GUI/Widgets/StateColor.cpp index b513eeae2..a3419b08d 100644 --- a/src/slic3r/GUI/Widgets/StateColor.cpp +++ b/src/slic3r/GUI/Widgets/StateColor.cpp @@ -36,6 +36,9 @@ int StateColor::states() const { int states = 0; for (auto s : statesList_) states |= s; + states = (states & 0xffff) | (states >> 16); + if (takeFocusedAsHovered_ && (states & Hovered)) + states |= Focused; return states; } @@ -45,6 +48,7 @@ wxColour StateColor::defaultColor() { wxColour StateColor::colorForStates(int states) { + bool focused = takeFocusedAsHovered_ && (states & Focused); for (int i = 0; i < statesList_.size(); ++i) { int s = statesList_[i]; int on = s & 0xffff; @@ -52,6 +56,13 @@ wxColour StateColor::colorForStates(int states) if ((on & states) == on && (off & ~states) == off) { return colors_[i]; } + if (focused && (on & Hovered)) { + on |= Focused; + on &= ~Hovered; + if ((on & states) == on && (off & ~states) == off) { + return colors_[i]; + } + } } return wxColour(0, 0, 0, 0); } @@ -78,3 +89,5 @@ bool StateColor::setColorForStates(wxColour const &color, int states) return false; } +void StateColor::setTakeFocusedAsHovered(bool set) { takeFocusedAsHovered_ = set; } + diff --git a/src/slic3r/GUI/Widgets/StateColor.hpp b/src/slic3r/GUI/Widgets/StateColor.hpp index 2b7643a0d..0855e64db 100644 --- a/src/slic3r/GUI/Widgets/StateColor.hpp +++ b/src/slic3r/GUI/Widgets/StateColor.hpp @@ -58,6 +58,8 @@ public: bool setColorForStates(wxColour const & color, int states); + void setTakeFocusedAsHovered(bool set); + private: template void fill(std::pair color, std::pair... colors) { @@ -76,6 +78,7 @@ private: private: std::vector statesList_; std::vector colors_; + bool takeFocusedAsHovered_ = true; }; #endif // !slic3r_GUI_StateColor_hpp_ diff --git a/src/slic3r/GUI/Widgets/TextInput.cpp b/src/slic3r/GUI/Widgets/TextInput.cpp index 1b962a278..605e2e12b 100644 --- a/src/slic3r/GUI/Widgets/TextInput.cpp +++ b/src/slic3r/GUI/Widgets/TextInput.cpp @@ -26,7 +26,6 @@ END_EVENT_TABLE() TextInput::TextInput() : state_handler(this) , border_color(std::make_pair(0xDBDBDB, (int) StateColor::Disabled), - std::make_pair(0x00AE42, (int) StateColor::Focused), std::make_pair(0x00AE42, (int) StateColor::Hovered), std::make_pair(0xDBDBDB, (int) StateColor::Normal)) , text_color(std::make_pair(0xACACAC, (int) StateColor::Disabled),