diff --git a/include/nana/gui/place.hpp b/include/nana/gui/place.hpp index b10a8a18..2f5dc52c 100644 --- a/include/nana/gui/place.hpp +++ b/include/nana/gui/place.hpp @@ -141,7 +141,7 @@ namespace nana } place& dock(const std::string& dockname, std::string factory_name, std::function(window)> factory); - place& dock_create(const std::string& factory); + widget* dock_create(const std::string& factory); private: implement * impl_; }; diff --git a/source/gui/place.cpp b/source/gui/place.cpp index 8f981475..01b70de1 100644 --- a/source/gui/place.cpp +++ b/source/gui/place.cpp @@ -2837,7 +2837,7 @@ namespace nana return *this; } - place& place::dock_create(const std::string& factory) + widget* place::dock_create(const std::string& factory) { auto i = impl_->dock_factoris.find(factory); if (i == impl_->dock_factoris.end()) @@ -2857,10 +2857,10 @@ namespace nana dock_ptr->dockarea->move(dock_ptr->attached->field_area); } - dock_ptr->dockarea->add_pane(i->second->factories[factory]); + return dock_ptr->dockarea->add_pane(i->second->factories[factory]); } - return *this; + return nullptr; } //end class place }//end namespace nana diff --git a/source/gui/place_parts.hpp b/source/gui/place_parts.hpp index 3b0edceb..1c969884 100644 --- a/source/gui/place_parts.hpp +++ b/source/gui/place_parts.hpp @@ -97,7 +97,7 @@ namespace nana graph.rectangle(r, true, xclr); } - + r.x += (r.width - 16) / 2; r.y = (r.height - 16) / 2; @@ -278,13 +278,15 @@ namespace nana } - void add_pane(factory & fn) + widget* add_pane(factory & fn) { auto fn_ptr = &fn; - API::dev::affinity_execute(*this, [this, fn_ptr] + widget * w = nullptr; + API::dev::affinity_execute(*this, [this, fn_ptr, &w] { - _m_add_pane(*fn_ptr); + w=_m_add_pane(*fn_ptr); }); + return w; } void float_away(const ::nana::point& move_pos) @@ -330,7 +332,7 @@ namespace nana return (nullptr != container_); } private: - void _m_add_pane(factory & fn) + widget* _m_add_pane(factory & fn) { rectangle r{ point(), this->size() }; @@ -385,6 +387,7 @@ namespace nana } panels_.emplace_back(); + widget * w=wdg.get(); panels_.back().widget_ptr.swap(wdg); for (auto & pn : panels_) @@ -392,7 +395,9 @@ namespace nana if (pn.widget_ptr) pn.widget_ptr->move(r); } + return w; } + return nullptr; } private: window host_window_{nullptr}; @@ -693,4 +698,4 @@ namespace nana }//end namespace place_parts }//end namespace nana -#endif //NANA_GUI_PLACE_PARTS_HPP \ No newline at end of file +#endif //NANA_GUI_PLACE_PARTS_HPP