improve stability of event

This commit is contained in:
Jinhao
2016-04-10 15:23:44 +08:00
parent 88b9149f54
commit 07b5b19545
23 changed files with 118 additions and 121 deletions

View File

@@ -94,7 +94,7 @@ namespace nana{ namespace drawerbase
{
impl_->crook.reverse();
arg_checkbox arg{ static_cast<nana::checkbox*>(impl_->widget_ptr) };
API::events<nana::checkbox>(impl_->widget_ptr->handle()).checked.emit(arg);
API::events<nana::checkbox>(impl_->widget_ptr->handle()).checked.emit(arg, impl_->widget_ptr->handle());
}
refresh(graph);
API::lazy_refresh();
@@ -172,7 +172,7 @@ namespace nana{ namespace drawerbase
API::refresh_window(handle());
arg_checkbox arg(this);
this->events().checked.emit(arg);
this->events().checked.emit(arg, this->handle());
}
}

View File

@@ -41,7 +41,7 @@ namespace nana
void text_changed() override
{
widget_.events().text_changed.emit(::nana::arg_combox{ widget_ });
widget_.events().text_changed.emit(::nana::arg_combox{ widget_ }, widget_);
}
private:
::nana::combox & widget_;
@@ -355,7 +355,7 @@ namespace nana
_m_draw_push_button(widget_->enabled());
_m_draw_image();
widget_->events().selected.emit(::nana::arg_combox(*widget_));
widget_->events().selected.emit(::nana::arg_combox(*widget_), widget_->handle());
}
}

View File

@@ -480,7 +480,7 @@ namespace nana
chose_ = true;
arg_datechooser evt_arg{ static_cast<nana::date_chooser*>(API::get_widget(window_handle)) };
API::events<nana::date_chooser>(window_handle).date_changed.emit(evt_arg);
API::events<nana::date_chooser>(window_handle).date_changed.emit(evt_arg, window_handle);
}
bool chose() const

View File

@@ -1208,7 +1208,7 @@ namespace nana
m.flags.checked = ck;
arg_listbox arg{ item_proxy{ess_, pos}, ck};
wd_ptr()->events().checked.emit(arg);
wd_ptr()->events().checked.emit(arg, wd_ptr()->handle());
}
++pos.item;
}
@@ -1279,7 +1279,7 @@ namespace nana
m.flags.selected = sel;
arg_listbox arg{ item_proxy(ess_, i), sel };
wd_ptr()->events().selected.emit(arg);
wd_ptr()->events().selected.emit(arg, wd_ptr()->handle());
if (m.flags.selected)
last_selected_abs = i;
@@ -1371,12 +1371,12 @@ namespace nana
if (for_selection)
{
m.flags.selected = false;
widget_->events().selected.emit(arg);
widget_->events().selected.emit(arg, widget_->handle());
}
else
{
m.flags.checked = false;
widget_->events().checked.emit(arg);
widget_->events().checked.emit(arg, widget_->handle());
}
};
@@ -1454,12 +1454,12 @@ namespace nana
if (for_selection)
{
m.flags.selected = false;
widget_->events().selected.emit(arg);
widget_->events().selected.emit(arg, widget_->handle());
}
else
{
m.flags.checked = false;
widget_->events().checked.emit(arg);
widget_->events().checked.emit(arg, widget_->handle());
}
};
@@ -1554,7 +1554,7 @@ namespace nana
m.flags.checked = ck;
arg_listbox arg{ item_proxy(ess_, index_pair(cat, index)), ck};
wd_ptr()->events().checked.emit(arg);
wd_ptr()->events().checked.emit(arg, widget_->handle());
changed = true;
}
@@ -3456,7 +3456,7 @@ namespace nana
index_pair last_selected(item_pos.cat, lister.absolute(item_pos));
arg_listbox arg{item_proxy{essence_, last_selected}, sel};
lister.wd_ptr()->events().selected.emit(arg);
lister.wd_ptr()->events().selected.emit(arg, lister.wd_ptr()->handle());
if (item_ptr->flags.selected)
{
@@ -3478,7 +3478,7 @@ namespace nana
index_pair abs_pos{ item_pos.cat, lister.absolute(item_pos) };
arg_listbox arg{ item_proxy{ essence_, abs_pos }, item_ptr->flags.checked };
lister.wd_ptr()->events().checked.emit(arg);
lister.wd_ptr()->events().checked.emit(arg, lister.wd_ptr()->handle());
if (item_ptr->flags.checked)
lister.cancel_others_if_single_enabled(false, abs_pos);
@@ -3572,7 +3572,7 @@ namespace nana
return;
arg_listbox_category arg_cat(cat_proxy(essence_, item_pos.cat));
lister.wd_ptr()->events().category_dbl_click.emit(arg_cat);
lister.wd_ptr()->events().category_dbl_click.emit(arg_cat, lister.wd_ptr()->handle());
if (!arg_cat.category_change_blocked()){
bool do_expand = (lister.expand(item_pos.cat) == false);
@@ -3741,7 +3741,7 @@ namespace nana
{
m.flags.checked = ck;
arg_listbox arg{*this, ck};
ess_->lister.wd_ptr()->events().checked.emit(arg);
ess_->lister.wd_ptr()->events().checked.emit(arg, ess_->lister.wd_ptr()->handle());
ess_->update();
}
return *this;
@@ -3760,7 +3760,7 @@ namespace nana
m.flags.selected = s; // actually change selection
arg_listbox arg{*this, s};
ess_->lister.wd_ptr()->events().selected.emit(arg);
ess_->lister.wd_ptr()->events().selected.emit(arg, ess_->lister.wd_ptr()->handle());
if (m.flags.selected)
{

View File

@@ -385,7 +385,7 @@ namespace nana
private:
void _m_emit_value_changed() const
{
other_.widget->events().value_changed.emit(::nana::arg_slider{ *other_.widget });
other_.widget->events().value_changed.emit(::nana::arg_slider{ *other_.widget }, other_.widget->handle());
}
nana::rectangle _m_bar_area() const

View File

@@ -38,7 +38,7 @@ namespace nana
void text_changed() override
{
widget_.events().text_changed.emit(::nana::arg_spinbox{ widget_ });
widget_.events().text_changed.emit(::nana::arg_spinbox{ widget_ }, widget_.handle());
}
private:
::nana::spinbox & widget_;

View File

@@ -1562,7 +1562,7 @@ namespace nana
API::lazy_refresh();
event_arg arg;
model_->widget_ptr()->events().selected.emit(arg);
model_->widget_ptr()->events().selected.emit(arg, model_->widget_ptr()->handle());
}
}
//end class driver
@@ -1701,7 +1701,7 @@ namespace nana
if (selection_changed && (active_pos != npos))
{
event_arg arg;
events().selected.emit(arg);
events().selected.emit(arg, handle());
}
}
//end class tabbar

View File

@@ -30,18 +30,18 @@ namespace drawerbase {
void event_agent::first_change()
{
widget_.events().first_change.emit(::nana::arg_textbox{ widget_, text_position_ });
widget_.events().first_change.emit(::nana::arg_textbox{ widget_, text_position_ }, widget_);
}
void event_agent::text_changed()
{
widget_.events().text_changed.emit(::nana::arg_textbox{ widget_, text_position_ });
widget_.events().text_changed.emit(::nana::arg_textbox{ widget_, text_position_ }, widget_);
}
void event_agent::text_exposed(const std::vector<upoint>& text_pos)
{
::nana::arg_textbox arg(widget_, text_pos);
widget_.events().text_exposed.emit(arg);
widget_.events().text_exposed.emit(arg, widget_);
}
//end class event_agent

View File

@@ -308,7 +308,7 @@ namespace nana
if (impl_->which != npos && container.at(impl_->which)->enable)
{
::nana::arg_toolbar arg{ *widget_, impl_->which };
widget_->events().leave.emit(arg);
widget_->events().leave.emit(arg, widget_->handle());
}
impl_->which = which;
@@ -322,7 +322,7 @@ namespace nana
if (impl_->state == item_renderer::state_t::highlighted)
{
::nana::arg_toolbar arg{ *widget_, which };
widget_->events().enter.emit(arg);
widget_->events().enter.emit(arg, widget_->handle());
}
}
@@ -346,7 +346,7 @@ namespace nana
if (which != npos && impl_->items.at(which)->enable)
{
::nana::arg_toolbar arg{ *widget_, which };
widget_->events().leave.emit(arg);
widget_->events().leave.emit(arg, widget_->handle());
}
}
impl_->tooltip.close();
@@ -371,7 +371,7 @@ namespace nana
if(impl_->which == which)
{
::nana::arg_toolbar arg{ *widget_, which };
widget_->events().selected.emit(arg);
widget_->events().selected.emit(arg, widget_->handle());
impl_->state = item_renderer::state_t::highlighted;
}

View File

@@ -496,7 +496,7 @@ namespace nana
{
data.stop_drawing = true;
item_proxy iprx(data.trigger_ptr, node);
data.widget_ptr->events().checked.emit(::nana::arg_treebox{ *data.widget_ptr, iprx, (checkstate::unchecked != cs) });
data.widget_ptr->events().checked.emit(::nana::arg_treebox{ *data.widget_ptr, iprx, (checkstate::unchecked != cs) }, data.widget_ptr->handle());
data.stop_drawing = false;
}
return true;
@@ -512,14 +512,14 @@ namespace nana
if (node_state.selected)
{
item_proxy iprx(data.trigger_ptr, node_state.selected);
data.widget_ptr->events().selected.emit(::nana::arg_treebox{ *data.widget_ptr, iprx, false });
data.widget_ptr->events().selected.emit(::nana::arg_treebox{ *data.widget_ptr, iprx, false }, data.widget_ptr->handle());
}
node_state.selected = node;
if (node)
{
item_proxy iprx(data.trigger_ptr, node_state.selected);
data.widget_ptr->events().selected.emit(::nana::arg_treebox{ *data.widget_ptr, iprx, true });
data.widget_ptr->events().selected.emit(::nana::arg_treebox{ *data.widget_ptr, iprx, true }, data.widget_ptr->handle());
}
data.stop_drawing = false;
return true;
@@ -544,7 +544,7 @@ namespace nana
data.stop_drawing = true;
//attr.ext_event.expand(data.widget_ptr->handle(), item_proxy(data.trigger_ptr, node), value);
item_proxy iprx(data.trigger_ptr, node);
data.widget_ptr->events().expanded.emit(::nana::arg_treebox{ *data.widget_ptr, iprx, value });
data.widget_ptr->events().expanded.emit(::nana::arg_treebox{ *data.widget_ptr, iprx, value }, data.widget_ptr->handle());
data.stop_drawing = false;
}
return true;
@@ -682,7 +682,7 @@ namespace nana
if (node_state.pointed)
{
item_proxy iprx(data.trigger_ptr, node_state.pointed);
data.widget_ptr->events().hovered.emit(::nana::arg_treebox{ *data.widget_ptr, iprx, false });
data.widget_ptr->events().hovered.emit(::nana::arg_treebox{ *data.widget_ptr, iprx, false }, data.widget_ptr->handle());
if (nl.node() != node_state.pointed)
close_tooltip_window();
@@ -691,7 +691,7 @@ namespace nana
node_state.pointed = nl.node();
item_proxy iprx(data.trigger_ptr, node_state.pointed);
data.widget_ptr->events().hovered.emit(::nana::arg_treebox{ *data.widget_ptr, iprx, true });
data.widget_ptr->events().hovered.emit(::nana::arg_treebox{ *data.widget_ptr, iprx, true }, data.widget_ptr->handle());
redraw = (node_state.comp_pointed != component::end);
@@ -709,7 +709,7 @@ namespace nana
redraw = true;
node_state.comp_pointed = component::end;
item_proxy iprx(data.trigger_ptr, node_state.pointed);
data.widget_ptr->events().hovered.emit(::nana::arg_treebox{ *data.widget_ptr, iprx, false });
data.widget_ptr->events().hovered.emit(::nana::arg_treebox{ *data.widget_ptr, iprx, false }, data.widget_ptr->handle());
close_tooltip_window();
node_state.pointed = nullptr;
@@ -1995,7 +1995,7 @@ namespace nana
if (impl_->node_state.pointed && (!impl_->node_state.tooltip))
{
item_proxy iprx(impl_->data.trigger_ptr, impl_->node_state.pointed);
impl_->data.widget_ptr->events().hovered.emit(::nana::arg_treebox{ *impl_->data.widget_ptr, iprx, false });
impl_->data.widget_ptr->events().hovered.emit(::nana::arg_treebox{ *impl_->data.widget_ptr, iprx, false }, impl_->data.widget_ptr->handle());
impl_->node_state.pointed = nullptr;
impl_->draw(false);
API::lazy_refresh();