Merge branch 'feature-dock_create-rv' of https://github.com/leobackes/nana into leobackes-feature-dock_create-rv

This commit is contained in:
Jinhao 2016-05-11 08:20:20 +08:00
commit 93af1430c5
3 changed files with 15 additions and 10 deletions

View File

@ -141,7 +141,7 @@ namespace nana
} }
place& dock(const std::string& dockname, std::string factory_name, std::function<std::unique_ptr<widget>(window)> factory); place& dock(const std::string& dockname, std::string factory_name, std::function<std::unique_ptr<widget>(window)> factory);
place& dock_create(const std::string& factory); widget* dock_create(const std::string& factory);
private: private:
implement * impl_; implement * impl_;
}; };

View File

@ -2837,7 +2837,7 @@ namespace nana
return *this; 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); auto i = impl_->dock_factoris.find(factory);
if (i == impl_->dock_factoris.end()) if (i == impl_->dock_factoris.end())
@ -2857,10 +2857,10 @@ namespace nana
dock_ptr->dockarea->move(dock_ptr->attached->field_area); 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 class place
}//end namespace nana }//end namespace nana

View File

@ -97,7 +97,7 @@ namespace nana
graph.rectangle(r, true, xclr); graph.rectangle(r, true, xclr);
} }
r.x += (r.width - 16) / 2; r.x += (r.width - 16) / 2;
r.y = (r.height - 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; 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) void float_away(const ::nana::point& move_pos)
@ -330,7 +332,7 @@ namespace nana
return (nullptr != container_); return (nullptr != container_);
} }
private: private:
void _m_add_pane(factory & fn) widget* _m_add_pane(factory & fn)
{ {
rectangle r{ point(), this->size() }; rectangle r{ point(), this->size() };
@ -385,6 +387,7 @@ namespace nana
} }
panels_.emplace_back(); panels_.emplace_back();
widget * w=wdg.get();
panels_.back().widget_ptr.swap(wdg); panels_.back().widget_ptr.swap(wdg);
for (auto & pn : panels_) for (auto & pn : panels_)
@ -392,7 +395,9 @@ namespace nana
if (pn.widget_ptr) if (pn.widget_ptr)
pn.widget_ptr->move(r); pn.widget_ptr->move(r);
} }
return w;
} }
return nullptr;
} }
private: private:
window host_window_{nullptr}; window host_window_{nullptr};
@ -693,4 +698,4 @@ namespace nana
}//end namespace place_parts }//end namespace place_parts
}//end namespace nana }//end namespace nana
#endif //NANA_GUI_PLACE_PARTS_HPP #endif //NANA_GUI_PLACE_PARTS_HPP