Something went wrong. Try again.
OpenMW is an open implementation of the Morrowind engine
Something went wrong. Try again.
3.4 kB · 127 lines
C++
at master
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128#include "sharedstatebutton.hpp"
namespace Gui{
SharedStateButton::SharedStateButton() : mIsMousePressed(false) , mIsMouseFocus(false) { }
void SharedStateButton::shutdownOverride() { ButtonGroup group = mSharedWith; // make a copy so that we don't nuke the vector during iteration for (ButtonGroup::iterator it = group.begin(); it != group.end(); ++it) { (*it)->shareStateWith(ButtonGroup()); } }
void SharedStateButton::shareStateWith(const ButtonGroup& shared) { mSharedWith = shared; }
void SharedStateButton::onMouseButtonPressed(int left, int top, MyGUI::MouseButton id) { mIsMousePressed = true; Base::onMouseButtonPressed(left, top, id); updateButtonState(); }
void SharedStateButton::onMouseButtonReleased(int left, int top, MyGUI::MouseButton id) { mIsMousePressed = false; Base::onMouseButtonReleased(left, top, id); updateButtonState(); }
void SharedStateButton::onMouseSetFocus(MyGUI::Widget* oldWidget) { mIsMouseFocus = true; Base::onMouseSetFocus(oldWidget); updateButtonState(); }
void SharedStateButton::onMouseLostFocus(MyGUI::Widget* newWidget) { mIsMouseFocus = false; Base::onMouseLostFocus(newWidget); updateButtonState(); }
void SharedStateButton::baseUpdateEnable() { Base::baseUpdateEnable(); updateButtonState(); }
void SharedStateButton::setStateSelected(bool value) { Base::setStateSelected(value); updateButtonState();
for (ButtonGroup::iterator it = mSharedWith.begin(); it != mSharedWith.end(); ++it) { (*it)->MyGUI::Button::setStateSelected(getStateSelected()); } }
bool SharedStateButton::_setState(const std::string& value) { bool ret = _setWidgetState(value); if (ret) { for (ButtonGroup::iterator it = mSharedWith.begin(); it != mSharedWith.end(); ++it) { (*it)->_setWidgetState(value); } } return ret; }
void SharedStateButton::updateButtonState() { if (getStateSelected()) { if (!getInheritedEnabled()) { if (!_setState("disabled_checked")) _setState("disabled"); } else if (mIsMousePressed) { if (!_setState("pushed_checked")) _setState("pushed"); } else if (mIsMouseFocus) { if (!_setState("highlighted_checked")) _setState("pushed"); } else _setState("normal_checked"); } else { if (!getInheritedEnabled()) _setState("disabled"); else if (mIsMousePressed) _setState("pushed"); else if (mIsMouseFocus) _setState("highlighted"); else _setState("normal"); } }
void SharedStateButton::createButtonGroup(ButtonGroup& group) { for (ButtonGroup::iterator it = group.begin(); it != group.end(); ++it) { (*it)->shareStateWith(group); } }
}