]> git.lyx.org Git - features.git/commitdiff
Refresh previews on branch toggle
authorScott Kostyshak <skostysh@lyx.org>
Wed, 11 Dec 2019 16:46:56 +0000 (11:46 -0500)
committerScott Kostyshak <skostysh@lyx.org>
Wed, 11 Dec 2019 16:48:56 +0000 (11:48 -0500)
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

src/insets/InsetBranch.cpp

index 88d00e641e486a7b76507d0ae40ee652badf9844..ecce3796ce54a8350cba10a705103b1bcc2ced42 100644 (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: