Refresh previews on branch toggle

We only referesh previews if the branch that is toggled exists in a
descendant. This code could be further optimized, as noted in the
comments.

For relevant discussion, see the following ML thread:

https://www.mail-archive.com/search?l=mid&q=20191209022030.d6gyy3abdectr3yz%40tallinn
This commit is contained in:
Scott Kostyshak 2019-12-11 11:46:56 -05:00
parent c61472303e
commit f1accdebf3

View File

@ -190,6 +190,21 @@ void InsetBranch::doDispatch(Cursor & cur, FuncRequest & cmd)
// cur.forceBufferUpdate() is not enough
buf->updateBuffer();
}
// if branch exists in a descendant, update previews.
// TODO: only needed if "Show preview" is enabled in the included inset.
bool exists_in_desc = false;
for (auto const & it : buf->getDescendents()) {
if (it->params().branchlist().find(params_.branch))
exists_in_desc = true;
}
if (exists_in_desc) {
// TODO: ideally we would only update the previews of the
// specific children that have this branch directly or
// in one of their descendants
buf->removePreviews();
buf->updatePreviews();
}
break;
}
case LFUN_BRANCH_INVERT: