#include "menudrop.h" #include "menuseparator.h" MenuDrop::MenuDrop() : _is_locked(false), _button_height(27), _button_index(0) {} void MenuDrop::input(const sf::Event& event) { if (!_is_visible) return; switch (event.type) { default: break; case sf::Event::MouseMoved: if (isUnderMouse(event.mouseButton.x, event.mouseButton.y)) { Widget::input(event); } else { if (!isLocked()) setVisibility(false); } break; } } void MenuDrop::update() { Widget::update(); } void MenuDrop::draw(sf::RenderTarget& target, sf::RenderStates states) const { target.draw(_content_rect); Widget::draw(target, states); } void MenuDrop::setRect(const sf::FloatRect& rect) { _content_rect.setPosition(rect.left, rect.top); _content_rect.setSize({rect.width, rect.height}); } void MenuDrop::setPosition(const sf::Vector2f& position) { _content_rect.setPosition(position); } bool MenuDrop::isUnderMouse(int mouse_x, int mouse_y) const { return _is_visible && _content_rect.getGlobalBounds().contains(mouse_x, mouse_y); } void MenuDrop::addButton(const std::shared_ptr