From 76422b1e1f0c4333a9b2f5eb7666330daa6c06cf Mon Sep 17 00:00:00 2001 From: NaiJi Date: Thu, 26 Aug 2021 21:22:19 +0300 Subject: [PATCH] Fix cascade menu bugs --- src/gui/editor.cpp | 12 +++++++++++- src/gui/widgets/button.cpp | 2 +- src/gui/widgets/cascademenubutton.cpp | 3 ++- src/gui/widgets/cascademenubutton.h | 3 +-- src/gui/widgets/menudrop.cpp | 4 ++-- 5 files changed, 17 insertions(+), 7 deletions(-) diff --git a/src/gui/editor.cpp b/src/gui/editor.cpp index a1afbfa..9048386 100644 --- a/src/gui/editor.cpp +++ b/src/gui/editor.cpp @@ -23,18 +23,28 @@ Editor::Editor(sf::RenderWindow& game_window, Callbacks&& callbacks, std::unique _bpm_calculator->startListening(0); }); + auto test_menu_2 = std::make_shared(); + test_menu_2->setRect(sf::FloatRect{0, 0, 200, 27 * 5}); + + auto test_cascade_button = std::make_shared("Show submenu", font_holder.get(Fonts::Id::GUI)); + auto quit_button = std::make_shared("Quit", font_holder.get(Fonts::Id::GUI)); quit_button->setCallback(callbacks.onLeaveEditorState); auto test_menu = std::make_shared(); - test_menu->setRect(sf::FloatRect{0, 0, 200, 27}); + test_menu->setRect(sf::FloatRect{0, 0, 200, 27 * 3}); _menu_bar->setRect(sf::FloatRect(0, 0, window_width, 27)); _menu_bar->addSubMenu("test", test_menu); + test_cascade_button->setSubmenu(test_menu_2); + test_menu->addPushButton(bpm_button); + test_menu->addCascadeButton(test_cascade_button); test_menu->addPushButton(quit_button); + test_cascade_button->resetRect(test_menu_2); + _music->openFromFile("Uta-test.flac"); _music->setVolume(5); } diff --git a/src/gui/widgets/button.cpp b/src/gui/widgets/button.cpp index 47c189f..9bc8f22 100644 --- a/src/gui/widgets/button.cpp +++ b/src/gui/widgets/button.cpp @@ -1,5 +1,5 @@ #include "button.h" - +#include Button::Button(const std::string &text, const std::shared_ptr& font, unsigned int font_size) : _font(font) { diff --git a/src/gui/widgets/cascademenubutton.cpp b/src/gui/widgets/cascademenubutton.cpp index a783550..4da65cc 100644 --- a/src/gui/widgets/cascademenubutton.cpp +++ b/src/gui/widgets/cascademenubutton.cpp @@ -16,10 +16,11 @@ void CascadeMenuButton::input(const sf::Event& event) break; case sf::Event::MouseMoved: - if (isUnderMouse(event.mouseButton.x, event.mouseButton.y)) + if (isUnderMouse(event.mouseMove.x, event.mouseMove.y)) { _button_content.setFillColor(sf::Color(84, 158, 253)); _submenu->lock(); + _submenu->setVisibility(true); } else { diff --git a/src/gui/widgets/cascademenubutton.h b/src/gui/widgets/cascademenubutton.h index ddff58c..a58ceb2 100644 --- a/src/gui/widgets/cascademenubutton.h +++ b/src/gui/widgets/cascademenubutton.h @@ -13,10 +13,9 @@ public: void setSubmenu(const std::shared_ptr& submenu); const std::shared_ptr submenu() const; + void resetRect(const std::shared_ptr& submenu); private: std::shared_ptr _submenu; - - void resetRect(const std::shared_ptr& submenu); }; diff --git a/src/gui/widgets/menudrop.cpp b/src/gui/widgets/menudrop.cpp index e759f96..3040afb 100644 --- a/src/gui/widgets/menudrop.cpp +++ b/src/gui/widgets/menudrop.cpp @@ -24,7 +24,7 @@ void MenuDrop::input(const sf::Event& event) case sf::Event::MouseButtonReleased: case sf::Event::MouseMoved: - if (!isUnderMouse(event.mouseButton.x, event.mouseButton.y)) + if (!isUnderMouse(event.mouseMove.x, event.mouseMove.y)) { if (!isLocked() && !hasActiveSubmenus()) setVisibility(false); @@ -88,7 +88,7 @@ void MenuDrop::addCascadeButton(const std::shared_ptr& button { auto& submenu = button->submenu(); submenu->setParent(_parent); - _submenus.emplace_back(); + _submenus.emplace_back(submenu); add(button); }