[LyX/master] When a macro template is changed compute all new previews at once
Jean-Marc Lasgouttes <[email protected]> Fri, 26 Jun 2026 17:47:31 +0000
| Newsgroups | gmane.editors.lyx.cvs |
|---|---|
| Message-ID | <[email protected]> |
commit 4714aec6b4b02ccf01ac928371ed86ae5f4a39c6 Author: Jean-Marc Lasgouttes <[email protected]> Date: Fri Jun 26 10:39:14 2026 +0200 When a macro template is changed compute all new previews at once When a math macro template is changed, it may be necessary to update the previews of math formulas after this point. However, the current code runs the preview machinery for each formula separately instead of accumulating snippets and computing all the previews at the same time. Thanks to Claude for the analysis. Fixes bug #13342. --- src/mathed/InsetMathHull.h | 9 ++++----- src/mathed/InsetMathMacroTemplate.cpp | 11 ++++++----- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/mathed/InsetMathHull.h b/src/mathed/InsetMathHull.h index 247eb45d12..b6c748a5ca 100644 --- a/src/mathed/InsetMathHull.h +++ b/src/mathed/InsetMathHull.h @@ -166,6 +166,10 @@ public: void notifyMouseSelectionDone(Cursor & cur) override; /// bool insetAllowed(InsetCode code) const override; + /// Prepare the preview if preview is enabled. + /// \param forexport: whether this is intended for export + /// If so, we ignore LyXRC and wait for the image to be generated. + void preparePreview(DocIterator const & pos, bool forexport = false) const; /// void addPreview(DocIterator const & inset_pos, graphics::PreviewLoader &) const override; @@ -212,11 +216,6 @@ protected: private: Inset * clone() const override; - /// Prepare the preview if preview is enabled. - /// \param forexport: whether this is intended for export - /// If so, we ignore LyXRC and wait for the image to be generated. - void preparePreview(DocIterator const & pos, - bool forexport = false) const; /// like reloadPreview, but forces load /// used by image export void loadPreview(DocIterator const & pos) const; diff --git a/src/mathed/InsetMathMacroTemplate.cpp b/src/mathed/InsetMathMacroTemplate.cpp index 23b143842d..1d73fd2cf4 100644 --- a/src/mathed/InsetMathMacroTemplate.cpp +++ b/src/mathed/InsetMathMacroTemplate.cpp @@ -36,6 +36,8 @@ #include "frontends/Painter.h" +#include "graphics/PreviewLoader.h" + #include "insets/RenderPreview.h" #include "support/lassert.h" @@ -855,14 +857,13 @@ void fixMacroInstances(Cursor & cur, DocIterator const & inset_pos, if (!preview_hulls.empty()) { // reload the scheduled previews - set<DocIterator>::const_iterator sit = preview_hulls.begin(); - set<DocIterator>::const_iterator end = preview_hulls.end(); - for (; sit != end; ++sit) { + for (auto const & sit : preview_hulls) { InsetMathHull * inset_hull = - sit->nextInset()->asInsetMath()->asHullInset(); + sit.nextInset()->asInsetMath()->asHullInset(); LBUFERR(inset_hull); - inset_hull->reloadPreview(*sit); + inset_hull->preparePreview(sit); } + inset_pos.buffer()->loader()->startLoading(); cur.screenUpdateFlags(Update::Force); } } -- lyx-cvs mailing list [email protected] https://lists.lyx.org/mailman/listinfo/lyx-cvs