fixed menubar width issue

the width of menubar is not changed when its parent window is resized
This commit is contained in:
cnjinhao 2015-01-02 13:55:34 +08:00
parent 977a6c0e86
commit 3ba765ea68
2 changed files with 15 additions and 2 deletions

View File

@ -102,12 +102,15 @@ namespace nana
: public widget_object<category::widget_tag, drawerbase::menubar::trigger> : public widget_object<category::widget_tag, drawerbase::menubar::trigger>
{ {
public: 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(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. 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& push_back(const nana::string&); ///< Appends a new (empty) menu.
menu& at(size_t index) const; ///< Gets the menu specified by index. menu& at(size_t index) const; ///< Gets the menu specified by index.
std::size_t length() const; ///< Number of menus. std::size_t length() const; ///< Number of menus.
private:
::nana::event_handle evt_resized_{nullptr};
};//end class menubar };//end class menubar
}//end namespace nana }//end namespace nana
#endif #endif

View File

@ -574,17 +574,27 @@ namespace nana
//class menubar //class menubar
menubar::menubar(){}
menubar::menubar(window wd) menubar::menubar(window wd)
{ {
create(wd); create(wd);
} }
menubar::~menubar()
{
API::umake_event(evt_resized_);
}
void menubar::create(window wd) void menubar::create(window wd)
{ {
widget_object<category::widget_tag, drawerbase::menubar::trigger> widget_object<category::widget_tag, drawerbase::menubar::trigger>
::create(wd, rectangle(nana::size(API::window_size(wd).width, 28))); ::create(wd, rectangle(nana::size(API::window_size(wd).width, 28)));
API::attach_menubar(handle()); 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) menu& menubar::push_back(const nana::string& text)