diff --git a/include/nana/gui/widgets/menubar.hpp b/include/nana/gui/widgets/menubar.hpp index ef9c8ce5..bec4dd5d 100644 --- a/include/nana/gui/widgets/menubar.hpp +++ b/include/nana/gui/widgets/menubar.hpp @@ -102,12 +102,15 @@ namespace nana : public widget_object { public: - menubar(); ///< The default constructor delay creation. + menubar() = default; ///< The default constructor delay creation. menubar(window); ///< Create a menubar at the top of the specified window. + ~menubar(); void create(window); ///< Create a menubar at the top of the specified window. menu& push_back(const nana::string&); ///< Appends a new (empty) menu. menu& at(size_t index) const; ///< Gets the menu specified by index. std::size_t length() const; ///< Number of menus. + private: + ::nana::event_handle evt_resized_{nullptr}; };//end class menubar }//end namespace nana #endif diff --git a/source/gui/widgets/menubar.cpp b/source/gui/widgets/menubar.cpp index aef4ea45..614055f3 100644 --- a/source/gui/widgets/menubar.cpp +++ b/source/gui/widgets/menubar.cpp @@ -574,17 +574,27 @@ namespace nana //class menubar - menubar::menubar(){} menubar::menubar(window wd) { create(wd); } + menubar::~menubar() + { + API::umake_event(evt_resized_); + } + void menubar::create(window wd) { widget_object ::create(wd, rectangle(nana::size(API::window_size(wd).width, 28))); API::attach_menubar(handle()); + evt_resized_ = API::events(wd).resized([this](const ::nana::arg_resized& arg) + { + auto sz = this->size(); + sz.width = arg.width; + this->size(sz); + }); } menu& menubar::push_back(const nana::string& text)