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) 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 else
return; return;
@ -1886,15 +1886,10 @@ namespace nana
if(!nl.node()) if(!nl.node())
return; return;
if (pressed_node == nl.node()) if (pressed_node != nl.node())
{ return; //Do not refresh
if ((impl_->node_state.selected != nl.node()) && nl.item_body())
{ if (nl.what() == component::crook)
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)
{ {
checkstate cs = checkstate::unchecked; checkstate cs = checkstate::unchecked;
if (checkstate::unchecked == nl.node()->value.second.checked) if (checkstate::unchecked == nl.node()->value.second.checked)
@ -1902,11 +1897,12 @@ namespace nana
check(nl.node(), cs); check(nl.node(), cs);
} }
else if ((impl_->node_state.selected != nl.node()) && (nl.item_body() || nl.what() == component::crook))
return; //Do not refresh {
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); impl_->draw(true);
API::dev::lazy_refresh(); API::dev::lazy_refresh();