]> git.lyx.org Git - lyx.git/commitdiff
Towards saner generation of previews code. Yeah, I know. I wrote it in
authorAngus Leeming <leeming@lyx.org>
Thu, 9 Oct 2003 23:14:30 +0000 (23:14 +0000)
committerAngus Leeming <leeming@lyx.org>
Thu, 9 Oct 2003 23:14:30 +0000 (23:14 +0000)
the first place. I was younger then.

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@7888 a592a061-630c-0410-9148-cb99ea01b6c8

src/graphics/ChangeLog
src/graphics/PreviewedInset.C
src/graphics/PreviewedInset.h
src/insets/ChangeLog
src/insets/insetinclude.C
src/mathed/ChangeLog
src/mathed/formula.C

index 9841e1049ebfe25aa68d2a07370c7de175872c2d..9c1da815ddfb4542d9183ea6d35a34a572938558 100644 (file)
@@ -1,3 +1,8 @@
+2003-10-09  Angus Leeming  <leeming@lyx.org>
+
+       * PreviewedInset.[Ch] (previewReady): remove the side effects.
+       Now simply reports whether the preview is ready.
+
 2003-10-09  Angus Leeming  <leeming@lyx.org>
 
        * PreviewedInset.[Ch]: move PreviewedInset out of namespace lyx::graphics.
index 39a078cf8efb530fc9c06c8733abc176a4234ac0..8056a1b82c12ea25d8bdb9687ad5a9bb641d7af9 100644 (file)
@@ -91,17 +91,8 @@ void PreviewedInset::removePreview(Buffer const & buffer)
 }
 
 
-bool PreviewedInset::previewReady(Buffer const & buffer) const
+bool PreviewedInset::previewReady() const
 {
-       if (!activated() || !previewWanted(buffer))
-               return false;
-
-       if (!pimage_ || snippet_ != pimage_->snippet()) {
-               graphics::PreviewLoader & ploader =
-                       graphics::Previews::get().loader(buffer);
-               pimage_ = ploader.preview(snippet_);
-       }
-
        return pimage_ ? pimage_->image() : false;
 }
 
index ee05138b63788e630db873e182df2b4b529a2190..4fbc2b79d1adb5812cfcfcfef14f60e556735b95 100644 (file)
@@ -57,7 +57,7 @@ public:
        void removePreview(Buffer const &);
 
        /// The preview has been generated and is ready to use.
-       bool previewReady(Buffer const &) const;
+       bool previewReady() const;
 
        /// If the preview is not ready, returns 0.
        lyx::graphics::PreviewImage const * const pimage() const { return pimage_; }
index 32ebf45e50129200a47a82513c1a76cfaba7b621..39d15f35afe9e22dc59b1485c2b46395590368c4 100644 (file)
@@ -1,3 +1,8 @@
+2003-10-09  Angus Leeming  <leeming@lyx.org>
+
+       * insetinclude.C (metrics, draw): no longer need to pass a Buffer arg
+       to PreviewedInset::previewReady.
+
 2003-10-09  Angus Leeming  <leeming@lyx.org>
 
        * insetexternal.[Ch] (statusChanged):
index 24e75ddfc7e6fac7831ae1cd77da0c7ac43002f4..ea2a1e902d4b06ff0e8beb9e5e8996f8e65faba4 100644 (file)
@@ -539,8 +539,7 @@ void InsetInclude::fillWithBibKeys(Buffer const & buffer,
 
 void InsetInclude::metrics(MetricsInfo & mi, Dimension & dim) const
 {
-       Buffer const * buffer_ptr = mi.base.bv ? mi.base.bv->buffer() : 0;
-       if (buffer_ptr && preview_->previewReady(*buffer_ptr)) {
+       if (preview_->previewReady()) {
                dim.asc = preview_->pimage()->ascent();
                dim.des = preview_->pimage()->descent();
                dim.wid = preview_->pimage()->width();
@@ -565,10 +564,8 @@ void InsetInclude::metrics(MetricsInfo & mi, Dimension & dim) const
 void InsetInclude::draw(PainterInfo & pi, int x, int y) const
 {
        cache(pi.base.bv);
-       Buffer const * buffer_ptr = pi.base.bv ? pi.base.bv->buffer() : 0;
-       bool const use_preview = buffer_ptr && preview_->previewReady(*buffer_ptr);
 
-       if (!use_preview) {
+       if (!preview_->previewReady()) {
                button_.draw(pi, x + button_.box().x1, y);
                return;
        }
index eecd49f19ccd78425a94c5b24234cb72a30dee32..7daeff64dc1791f64d4338d6637a9617543880dc 100644 (file)
@@ -1,3 +1,11 @@
+2003-10-09  Angus Leeming  <leeming@lyx.org>
+
+       * formula.C (metrics, draw): no longer need to pass a Buffer arg
+       to PreviewedInset::previewReady because it no longer has the side
+       effect of secretly starting preview generation.
+       (draw): call PreviewedInset::generatePreview explicitly if the
+       inset is no longer being edited.
+
 2003-10-09  Angus Leeming  <leeming@lyx.org>
 
        * formula.[Ch]: mods to PreviewImpl due to the changes to
index e739e16d7b80016f3352c215ecaef997a0ccfbdb..84ec914000bbf3bc5bae7bb306ed6f12436cc7fe 100644 (file)
@@ -193,11 +193,18 @@ void InsetFormula::read(Buffer const &, LyXLex & lex)
 
 void InsetFormula::draw(PainterInfo & pi, int x, int y) const
 {
-       cache(pi.base.bv);
-       // This initiates the loading of the preview, so should come
-       // before the metrics are computed.
-       Buffer const * buffer_ptr = pi.base.bv ? pi.base.bv->buffer() : 0;
-       bool const use_preview = buffer_ptr && preview_->previewReady(*buffer_ptr);
+       BufferView * bv = pi.base.bv;
+       cache(bv);
+
+       // The previews are drawn only when we're not editing the inset.
+       bool const editing_inset = mathcursor && mathcursor->formula() == this;
+       bool const use_preview = !editing_inset && preview_->previewReady();
+
+       if (!editing_inset && bv) {
+               Buffer const * buffer_ptr = bv->buffer();
+               if (buffer_ptr)
+                       preview_->generatePreview(*buffer_ptr);
+       }
 
        int const w = dim_.wid;
        int const d = dim_.des;
@@ -208,7 +215,7 @@ void InsetFormula::draw(PainterInfo & pi, int x, int y) const
                pi.pain.image(x + 1, y - a, w, h,   // one pixel gap in front
                              *(preview_->pimage()->image()));
        } else {
-               PainterInfo p(pi.base.bv);
+               PainterInfo p(bv);
                p.base.style = LM_ST_TEXT;
                p.base.font  = pi.base.font;
                p.base.font.setColor(LColor::math);
@@ -216,9 +223,7 @@ void InsetFormula::draw(PainterInfo & pi, int x, int y) const
                            != lcolor.getX11Name(LColor::background))
                        p.pain.fillRectangle(x, y - a, w, h, LColor::mathbg);
 
-               if (mathcursor &&
-                               const_cast<InsetFormulaBase const *>(mathcursor->formula()) == this)
-               {
+               if (editing_inset) {
                        mathcursor->drawSelection(pi);
                        //p.pain.rectangle(x, y - a, w, h, LColor::mathframe);
                }
@@ -262,8 +267,11 @@ bool InsetFormula::insetAllowed(InsetOld::Code code) const
 void InsetFormula::metrics(MetricsInfo & m, Dimension & dim) const
 {
        view_ = m.base.bv;
-       Buffer const * buffer_ptr = m.base.bv ? m.base.bv->buffer() : 0;
-       if (buffer_ptr && preview_->previewReady(*buffer_ptr)) {
+
+       bool const editing_inset = mathcursor && mathcursor->formula() == this;
+       bool const use_preview = !editing_inset && preview_->previewReady();
+
+       if (use_preview) {
                dim.asc = preview_->pimage()->ascent();
                dim.des = preview_->pimage()->descent();
                // insert a one pixel gap in front of the formula