diff --git a/src/gui/editor.cpp b/src/gui/editor.cpp index 04c758e..c9a8294 100644 --- a/src/gui/editor.cpp +++ b/src/gui/editor.cpp @@ -66,7 +66,9 @@ void Editor::enter() 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); + _menu_bar->addRootSubMenu("test", test_menu); + _menu_bar->addDependentSubmenu(test_menu_2); + _menu_bar->addDependentSubmenu(test_menu_3); test_cascade_button->setSubmenu(test_menu_2); diff --git a/src/gui/widgets/cascademenubutton.cpp b/src/gui/widgets/cascademenubutton.cpp index a32b23f..bdea938 100644 --- a/src/gui/widgets/cascademenubutton.cpp +++ b/src/gui/widgets/cascademenubutton.cpp @@ -61,7 +61,6 @@ void CascadeMenuButton::resetRect() { _submenu->setPosition({_button_content.getPosition().x + _button_content.getSize().x, _button_content.getPosition().y}); - _submenu->setVisibility(false); } } diff --git a/src/gui/widgets/menubar.cpp b/src/gui/widgets/menubar.cpp index c123bd2..56027e4 100644 --- a/src/gui/widgets/menubar.cpp +++ b/src/gui/widgets/menubar.cpp @@ -67,7 +67,7 @@ bool MenuBar::isUnderMouse(int mouse_x, int mouse_y) const return bar_under_mouse || submenus_under_mouse; } -void MenuBar::addSubMenu(std::string name, const std::shared_ptr& submenu) +void MenuBar::addRootSubMenu(std::string name, const std::shared_ptr& submenu) { const auto new_button = std::make_shared(name, _font); @@ -91,6 +91,11 @@ void MenuBar::addSubMenu(std::string name, const std::shared_ptr& subm ++_amount_buttons; } +void MenuBar::addDependentSubmenu(const std::shared_ptr &submenu) +{ + _submenus.emplace_back(submenu);; +} + void MenuBar::setVisibility(bool is_visible) { Widget::setVisibility(is_visible); diff --git a/src/gui/widgets/menubar.h b/src/gui/widgets/menubar.h index a3e6ad5..ec639d7 100644 --- a/src/gui/widgets/menubar.h +++ b/src/gui/widgets/menubar.h @@ -19,7 +19,8 @@ public: virtual bool isUnderMouse(int mouse_x, int mouse_y) const override; virtual void setVisibility(bool is_visible = true) override; - void addSubMenu(std::string name, const std::shared_ptr& submenu); + void addRootSubMenu(std::string name, const std::shared_ptr& submenu); + void addDependentSubmenu(const std::shared_ptr& submenu); private: std::shared_ptr _font;