add functionality to associate label with other widget as a "for" attribute of HTML <label> element

This commit is contained in:
beru 2015-05-17 15:02:09 +09:00
parent 990de7867b
commit 80da9007ef
2 changed files with 13 additions and 0 deletions

View File

@ -65,6 +65,8 @@ namespace nana
label& format(bool); ///< Switches the format mode of the widget.
label& add_format_listener(std::function<void(command, const nana::string&)>);
void relate(widget& w); // as same as the "for" attribute of a label
/// \briefReturn the size of the text. If *allowed_width_in_pixel* is not zero, returns a
/// "corrected" size that changes lines to fit the text into the specified width
nana::size measure(unsigned allowed_width_in_pixel) const;

View File

@ -628,6 +628,8 @@ namespace nana
nana::string target; //It indicates which target is tracing.
nana::string url;
widget * buddy {nullptr};
void add_listener(std::function<void(command, const nana::string&)>&& fn)
{
listener_.emplace_back(std::move(fn));
@ -740,6 +742,10 @@ namespace nana
impl_->call_listener(command::click, impl_->target);
system::open_url(url);
if (impl_->buddy) {
impl_->buddy->focus();
}
}
void trigger::refresh(graph_reference graph)
@ -821,6 +827,11 @@ namespace nana
return *this;
}
void label::relate(widget& w)
{
get_drawer_trigger().impl()->buddy = &w;
}
nana::size label::measure(unsigned limited) const
{
if(empty())