diff --git a/include/nana/gui/widgets/toolbar.hpp b/include/nana/gui/widgets/toolbar.hpp index d92c7f8a..b3b7223e 100644 --- a/include/nana/gui/widgets/toolbar.hpp +++ b/include/nana/gui/widgets/toolbar.hpp @@ -90,6 +90,7 @@ namespace nana void separate(); ///< Adds a separator. void append(const ::std::string& text, const nana::paint::image& img); ///< Adds a control button. void append(const ::std::string& text); ///< Adds a control button. + void clear(); ///< Removes all control buttons and separators. bool enable(size_type index) const; void enable(size_type index, bool enable_state); void scale(unsigned s); ///< Sets the scale of control button. diff --git a/source/gui/widgets/toolbar.cpp b/source/gui/widgets/toolbar.cpp index 953e4796..7fb927cc 100644 --- a/source/gui/widgets/toolbar.cpp +++ b/source/gui/widgets/toolbar.cpp @@ -57,8 +57,7 @@ namespace nana ~item_container() { - for(auto ptr : cont_) - delete ptr; + clear(); } void insert(size_type pos, std::string text, const nana::paint::image& img, item_type::kind type) @@ -120,6 +119,15 @@ namespace nana { return cont_.at(pos); } + + void clear() + { + for(auto ptr : cont_) + delete ptr; + + cont_.clear(); + } + private: container_type cont_; size_t right_{ npos }; @@ -461,6 +469,12 @@ namespace nana API::refresh_window(this->handle()); } + void toolbar::clear() + { + get_drawer_trigger().items().clear(); + API::refresh_window(this->handle()); + } + bool toolbar::enable(size_type pos) const { auto & items = get_drawer_trigger().items();