emit tree node selected only after mouse_down and checked

this avoid inconsistent drawing or too much redrawing
This commit is contained in:
qPCR4vir 2018-11-07 16:03:50 +01:00
parent 840d6b775d
commit 927c625a7d

View File

@ -1863,7 +1863,7 @@ namespace nana
}
else if (node_state.selected != node_state.pressed_node)
{
impl_->set_selected(node_state.pressed_node);
//impl_->set_selected(node_state.pressed_node); // todo: emit selected after checked
}
else
return;
@ -1886,15 +1886,10 @@ namespace nana
if(!nl.node())
return;
if (pressed_node == nl.node())
{
if ((impl_->node_state.selected != nl.node()) && nl.item_body())
{
impl_->set_selected(nl.node());
if (impl_->make_adjust(impl_->node_state.selected, 1))
impl_->adjust.scroll_timestamp = 1;
}
else if (nl.what() == component::crook)
if (pressed_node != nl.node())
return; //Do not refresh
if (nl.what() == component::crook)
{
checkstate cs = checkstate::unchecked;
if (checkstate::unchecked == nl.node()->value.second.checked)
@ -1902,11 +1897,12 @@ namespace nana
check(nl.node(), cs);
}
else
return; //Do not refresh
if ((impl_->node_state.selected != nl.node()) && (nl.item_body() || nl.what() == component::crook))
{
impl_->set_selected(nl.node());
if (impl_->make_adjust(impl_->node_state.selected, 1))
impl_->adjust.scroll_timestamp = 1;
}
else
return; //Don't refresh
impl_->draw(true);
API::dev::lazy_refresh();